原生javascript获取元素样式


Posted in Javascript onDecember 31, 2014

摘要:
    我们在开发过程中经常会遇到通过js获取或者改变DOM元素的样式,方法有很多,比如:通过更改DOM元素的class。现在我们讨论原生js来获取DOM元素的CSS样式,注意是获取不是设置

    在开始之前先说下获取最终应用在元素上的所有CSS属性对象的意思是,如果没有给元素设置任何样式,也会把浏览器默认的样式返回来。

1、ele.style
    在学习DOM的时候就看到通过ele.style来获取元素样式值,但是有时候获取的并非是节点的样式值,而是空值。这是因为ele.style只能获取写在元素标签中的style属性里的样式值,无法获取到定义在<style></style>和通过<link href="css.css">加载进来的样式属性

    例子:

        var test = document.getElementById("test");

        //获取节点的color

        test.style.color;

2、getComputedStyle()
    getComputedStyle是一个可以获取当前元素所有最终使用的CSS属性值。

    语法如下:

        window.getComputedStyle("元素", "伪类");

    这个方法接受两个参数:要取得计算样式的元素和一个伪元素字符串(例如“:before”) 。如果不需要伪元素信息,第二个参数可以是null。也可以通过document.defaultView.getComputedStyle("元素", "伪类");来使用

    例子:

        var test = document.getElementById("test"),

        demo = window.getComputedStyle(test, null); 

        //获取节点的color

         demo.color 

    注意:Firefox和Safari会将颜色转换成rgb格式,如果test节点上没有任何样式,通过style.length来查看浏览器默认样式的个数。IE6-8不支持该方法,需要使用下面的方法

3、ele.currentStyle
    currentStyle是IE浏览器自己的一个属性,其语法与ele.style类似,差别在于element.currentStyle返回的是元素当前应用的最终CSS属性值(包括外链CSS文件,页面中嵌入的<style>属性等)。

    语法:

        var style = dom.currentStyle;

    例子:

        var test = document.getElementById("test"),

        demo = test.currentStyle; 

        //获取节点的color

        demo.color;

     注意:对于综合属性border等,ie返回undefined,其他浏览器有的返回值,有的不返回,但是borderLeftWidth这样的属性是返回值的

4、getPropertyValue()
    getPropertyValue获取CSS样式的直接属性名称

    语法如下:

        window.getComputedStyle(element, null).getPropertyValue(属性)

    例子:

      var test = document.getElementById('test');

      window.getComputedStyle(test, null).getPropertyValue("background-color");

     注意:属性名不支持驼峰格式,IE6-8不支持该方法,需要使用下面的方法

5、getAttribute
    getAttribute与getPropertyValue类似,有一点的差异是属性名驼峰格式

    例子:

        var test = document.getElementById('test');

        window.getComputedStyle(test, null).getPropertyValue("backgroundColor");

    注意:该方法只支持IE6-8

小结:
    jQuery的CSS()方法,其底层运作就应用了getComputedStyle以及getPropertyValue方法,当我们使用原生的js开发时就可以通过以上方法获取元素的值。

下面是一个兼容ie,firefox,chrome等浏览器的获取元素样式的方法,可以应用到项目中

 function getStyle(ele) {

     var style = null;

     

     if(window.getComputedStyle) {

         style = window.getComputedStyle(ele, null);

     }else{

         style = ele.currentStyle;

     }

     

     return style;

 }
Javascript 相关文章推荐
jQuery toggle()设置CSS样式
Nov 05 Javascript
javascript &amp;&amp;和||运算法的另类使用技巧
Nov 28 Javascript
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
Jun 25 Javascript
jquery获取select选中值的方法分析
Dec 22 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 Javascript
10种JavaScript最常见的错误(小结)
Jun 21 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
Jan 06 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 Javascript
JavaScript分析、压缩工具JavaScript Analyser
Dec 31 #Javascript
jQuery中:last-child选择器用法实例
Dec 31 #Javascript
jQuery中:nth-child选择器用法实例
Dec 31 #Javascript
jQuery中:first-child选择器用法实例
Dec 31 #Javascript
jQuery中复合属性选择器用法实例
Dec 31 #Javascript
javascript实现左右控制无缝滚动
Dec 31 #Javascript
javascript比较两个日期的先后示例代码
Dec 31 #Javascript
You might like
PHP 动态随机生成验证码类代码
2010/04/09 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
Yii学习总结之安装配置
2015/02/22 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
纯JS代码实现一键分享功能
2016/04/20 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
Node.js API详解之 console模块用法详解
2020/05/12 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
详解python深浅拷贝区别
2019/06/24 Python
python线程中的同步问题及解决方法
2019/08/29 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
HTML5中如何显示视频呢 HTML5视频播放demo
2013/06/08 HTML / CSS
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
Ashford台湾:以折扣价提供奢华的男女用表款
2019/12/04 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
公司庆典活动邀请函
2014/01/09 职场文书
师范生自我鉴定
2014/03/20 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
初二英语教学反思
2016/02/15 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js