解析js如何获取css样式


Posted in Javascript onDecember 11, 2016

一、获取内联样式

<div id ="myDiv" style="width:100px;height:100px;background-color:red; border:1px solid black;"></div>
<script>
  var myDiv = document.getElementById("myDiv");

  alert(myDiv.style.width);//100px

  alert(myDiv.style['height']);//100px

  var style=myDiv.style;
  alert(style.backgroundColor);//red

  myDiv.style.backgroundColor='green';//myDiv背景色变为绿色 
</script>

在这种情况下,获取和设置样式只靠style属性就可以,因为element.style属性返回的是类似数组的一组样式属性及对应值,因此访问具体样式的时候可以采取两种方式即“ele.style.属性名称”和“ele.style['属性名称']”。但是,要注意的是,针对css样式里background-color;margin-left之类的短杠相接的属性名称,在使用style属性获取设置样式的时候名称要改为驼峰式,如ele.style.backgroundColor.

二、因为第一种方法,即使用style属性只能获取到内联样式。但是,实际情况是文档在现在都基本遵循分离思想,样式基本都是外部链接,所以三种样式都要考虑到的,这时就要使用其他方法进行获取,而在这种情况下进行样式获取时,不同的浏览器又有不同的处理方式(主要是ie和非ie),因此根据浏览器可以分为两种方式:

(2.1)非ie浏览器中,使用document.defaultView对象的getComputedStyle(ele,null/伪类)方法,该方法接受两个参数,第一个为要考察的元素,第二个则要根据情况,如果只是考察元素本身则为null,如果要 考察伪类,则为响应的伪类。该方法获取到的为元素应用的最终样式组合,同样是类似数组的一个实例。

(2.2)在ie浏览器中,对getComputedStyle()方法不支持,但是针对每个标签元素都有一个近似于style属性的currentStyle的属性,且用法和style用法相同。只不过获取到的样式范围不一样。currenStyle获取到的和getComputedStyle()方法相接近。

为了在处理时达到兼容,可以根据这两种不同的处理方式创建一个函数来达到兼容目的,使得不管在那种浏览器中,都可以成功获取样式。如下所示:

<style type="text/css">
#myDiv {
  background-color:blue;
  width:100px;
  height:200px;
}
</style>
<div id ="myDiv" style="background-color:red; border:1px solid black;"></div>
<script>
  var myDiv = document.getElementById("myDiv");
  var finalStyle = myDiv.currentStyle ? myDiv.currentStyle : document.defaultView.getComputedStyle(myDiv, null);/*利用判断是否支持currentStyle(是否为ie)
  来通过不同方法获取style*/
  alert(finalStyle.backgroundColor);  //"red"
  alert(finalStyle.width);       //"100px"
  alert(finalStyle.height);       //"200px"
</script>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
向大师们学习Javascript(视频与PPT)
Dec 27 Javascript
Javascript setInterval的两种调用方法(实例讲解)
Nov 29 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
JavaScript控制按钮可用或不可用的方法
Apr 03 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
jQuery Validate初步体验(一)
Dec 12 Javascript
js滚轮事件兼容性问题需要注意哪些
Nov 15 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
Jun 19 Javascript
js中less常用的方法小结
Aug 09 Javascript
layui select获取自定义属性方法
Aug 15 Javascript
4 种滚动吸顶实现方式的比较
Apr 09 Javascript
如何在VUE中使用vue-awesome-swiper
Jan 04 Vue.js
BootStrap轮播HTML代码(推荐)
Dec 10 #Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 #Javascript
JS产生随机数的用法小结
Dec 10 #Javascript
基于JavaScript实现随机颜色输入框
Dec 10 #Javascript
BootStrap中
Dec 10 #Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 #Javascript
JS 循环li添加点击事件 (闭包的应用)
Dec 10 #Javascript
You might like
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
JQuery验证工具类搜集整理
2013/01/16 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
常用原生js自定义函数总结
2016/11/20 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
浅谈js数组和splice的用法
2016/12/04 Javascript
jsonp跨域请求详解
2017/07/13 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
puppeteer库入门初探
2019/01/09 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
在python中的socket模块使用代理实例
2014/05/29 Python
python 迭代器和iter()函数详解及实例
2017/03/21 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
python中update的基本使用方法详解
2019/07/17 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
三星法国官方网站:Samsung法国
2019/10/31 全球购物
中间件的定义
2016/08/09 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
护士自我评价
2014/02/01 职场文书
国博复兴之路观后感
2015/06/02 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电