原生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 相关文章推荐
js arguments对象应用介绍
Nov 28 Javascript
浅析JavaScript原型继承的陷阱
Dec 03 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 Javascript
js实现碰撞检测特效代码分享
Oct 16 Javascript
Easyui在treegrid添加控件的实现方法
Jun 23 Javascript
详解node nvm进行node多版本管理
Oct 21 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
微信小程序使用wxParse解析html的方法教程
Jul 06 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
Feb 13 Javascript
react的滑动图片验证码组件的示例代码
Feb 27 Javascript
JavaScript数值类型知识汇总
Nov 17 Javascript
vue-cli3配置favicon.ico和title的流程
Oct 27 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
德生9700DX电路分析
2021/03/02 无线电
Zend 输出产生XML解析错误
2009/03/03 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
基于jQuery实现表格的查看修改删除
2016/08/01 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python解释执行原理分析
2014/08/22 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
使用sklearn之LabelEncoder将Label标准化的方法
2018/07/11 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
Python表达式的优先级详解
2020/02/18 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
医学专业自荐信
2014/06/14 职场文书
信息与工商管理职业规划范文:为梦想而搏击
2014/09/11 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
初二学生评语大全
2014/12/26 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
Django drf请求模块源码解析
2021/06/08 Python
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android
Python加密技术之RSA加密解密的实现
2022/04/08 Python