原生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 相关文章推荐
JavaScript 监听textarea中按键事件
Oct 08 Javascript
深入理解javaScript中的事件驱动
May 21 Javascript
javascript求日期差的方法
Mar 02 Javascript
详解AngularJS过滤器的使用
Mar 11 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
Dec 30 Javascript
easyUI combobox实现联动效果
Jan 17 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
jQuery实现简单弹窗遮罩效果
Feb 27 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
微信小程序实战之登录页面制作(5)
Mar 30 Javascript
跨域请求两种方法 jsonp和cors的实现
Nov 11 Javascript
javascript canvas封装动态时钟
Sep 30 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之Memcache学习笔记
2013/06/17 PHP
php中如何防止表单的重复提交
2013/08/02 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
常用的javascript function代码
2008/05/23 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
Jquery uploadify上传插件使用详解
2016/01/13 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
2016/07/25 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
2017/05/20 jQuery
JS抛物线动画实例制作
2018/02/24 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
Python Queue模块详细介绍及实例
2016/12/27 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
青年教师典范事迹材料
2014/01/31 职场文书
购房协议书范本
2014/04/11 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
结对共建协议书
2014/08/20 职场文书
债务纠纷委托书
2014/08/30 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
辞职信范文大全
2015/03/02 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android