原生js获取元素样式的简单方法


Posted in Javascript onAugust 06, 2016

我们在开发过程中经常会遇到通过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;
}

以上这篇原生js获取元素样式的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript instanceof 与typeof使用说明
Jan 11 Javascript
JS 自定义函数缺省值的设置方法
May 05 Javascript
js中通过父级进行查找定位元素
Jun 15 Javascript
node.js开机自启动脚本文件
Dec 24 Javascript
基于jquery实现人物头像跟随鼠标转动
Aug 23 Javascript
pace.js页面加载进度条插件
Sep 29 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
Aug 27 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
Feb 09 Javascript
基于bootstrap页面渲染的问题解决方法
Aug 09 Javascript
用js实现放大镜效果
Oct 28 Javascript
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 Javascript
浅析Node.js实现HTTP文件下载
Aug 05 #Javascript
JS中对Cookie的操作详解
Aug 05 #Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
Aug 05 #Javascript
js实现精确到毫秒的倒计时效果
Aug 05 #Javascript
jQuery实现Select左右复制移动内容
Aug 05 #Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
Aug 05 #Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
Aug 05 #Javascript
You might like
用PHP实现小型站点广告管理
2006/10/09 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
php中实现精确设置session过期时间的方法
2014/07/17 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
juqery 学习之三 选择器 子元素与表单
2010/11/25 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
原生JS实现留言板
2020/03/26 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
Python访问MySQL封装的常用类实例
2014/11/11 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
pytorch的batch normalize使用详解
2020/01/15 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
python不同版本的_new_不同点总结
2020/12/09 Python
前端canvas动画如何转成mp4视频的方法
2019/06/17 HTML / CSS
Furla官网:意大利著名的皮革品牌
2019/08/06 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
电脑教师的自我评价
2013/12/18 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
暑假打工感想
2015/08/07 职场文书
安全教育主题班会总结
2015/08/14 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python