原生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事件机制扩展插件 jquery鼠标右键事件。
Dec 26 Javascript
jquery ajax跨域解决方法(json方式)
Feb 04 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
一款基于jQuery的图片场景标注提示弹窗特效
Jan 05 Javascript
moment.js轻松实现获取当前日期是当年的第几周
Feb 05 Javascript
轻松实现Bootstrap图片轮播
Apr 20 Javascript
jQuery实现点击水纹波动动画
Apr 10 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
结合Vue控制字符和字节的显示个数的示例
May 17 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
Sep 25 Javascript
详细谈谈JavaScript中循环之间的差异
Aug 23 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
2006/12/14 PHP
PHP中遍历stdclass object的实现代码
2011/06/09 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
很棒的vue弹窗组件
2017/05/24 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
JavaScript中window和document用法详解
2020/07/28 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
python web框架学习笔记
2016/05/03 Python
python paramiko模块学习分享
2017/08/23 Python
python如何在循环引用中管理内存
2018/03/20 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
Django在Model保存前记录日志实例
2020/05/14 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
项目转让协议书
2014/10/27 职场文书
2019年最新七夕唯美祝福语(60条)
2019/07/22 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技