原生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 相关文章推荐
给网站上的广告“加速”显示的方法
Apr 08 Javascript
Iframe thickbox2.0使用的方法
Mar 05 Javascript
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
vue-router实现webApp切换页面动画效果代码
May 25 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
Jul 13 Javascript
浅谈Node.js爬虫之网页请求模块
Jan 11 Javascript
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
Apr 22 Javascript
微信小程序实现商城倒计时
Nov 01 Javascript
JavaScript迭代器的含义及用法
Jun 21 Javascript
js实现课堂随机点名系统
Nov 21 Javascript
Vue 一键清空表单的实现方法
Feb 07 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
基于mysql的论坛(1)
2006/10/09 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
Python 列表(List)操作方法详解
2014/03/11 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
对python append 与浅拷贝的实例讲解
2018/05/04 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Python 内存管理机制全面分析
2021/01/16 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
欧克利英国官网:Oakley英国
2019/08/24 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
工商管理实习生自我鉴定范文
2013/12/18 职场文书
KTV的创业计划书范文
2014/02/02 职场文书
行政人事岗位职责
2014/03/17 职场文书
体育活动总结范文
2014/05/04 职场文书
2015教师年度考核评语
2015/03/25 职场文书
关于倡议书的范文
2015/04/29 职场文书
九九重阳节致辞
2015/07/31 职场文书
浅析JavaScript中的变量提升
2022/06/01 Javascript