原生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 相关文章推荐
JS在textarea光标处插入文本的小例子
Mar 22 Javascript
用jquery存取照片的具体实现方法
Jun 30 Javascript
Javasipt:操作radio标签详解
Dec 30 Javascript
js实现左侧网页tab滑动门效果代码
Sep 06 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
js自制图片放大镜功能
Jan 24 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
使用angular-cli webpack创建多个包的方法
Oct 16 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
微信小程序云开发实现增删改查功能
May 17 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
Apr 26 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数组中的重复值的实现代码
2011/07/17 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
JavaScript数据结构之单链表和循环链表
2017/11/28 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
JavaScript判断数组类型的方法
2019/10/23 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
python获取当前日期和时间的方法
2015/04/30 Python
深入理解python中函数传递参数是值传递还是引用传递
2017/11/07 Python
快速了解Python相对导入
2018/01/12 Python
Django实现组合搜索的方法示例
2018/01/23 Python
python3实现随机数
2018/06/25 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
python 调用钉钉机器人的方法
2019/02/20 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
社区八一活动方案
2014/02/03 职场文书
2014年家长学校工作总结
2014/11/20 职场文书