原生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 相关文章推荐
jQuery 开发者应该注意的9个错误
May 03 Javascript
ECMAScript 创建自己的js类库
Nov 22 Javascript
jquery自定义函数的多种方法
Jan 09 Javascript
深入学习jQuery Validate表单验证
Jan 18 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
Apr 14 Javascript
js判断复选框是否选中及选中个数的实现代码
May 30 Javascript
js友好的时间返回函数
Aug 24 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
vue实现简单实时汇率计算功能
Jan 15 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 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&amp;MYSQL留言板源码
2020/07/19 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
destoon实现首页显示供应、企业、资讯条数的方法
2014/07/15 PHP
帝国cms目录结构分享
2015/07/06 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
文本加密解密
2006/06/23 Javascript
Javascript----文件操作
2007/01/18 Javascript
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
js的匿名函数使用介绍
2013/12/11 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
vue router 组件的高级应用实例代码
2019/04/08 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
Python获取脚本所在目录的正确方法
2014/04/15 Python
使用Python的PEAK来适配协议的教程
2015/04/14 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
python交互式图形编程实例(一)
2017/11/17 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
80后职场人的职业生涯规划
2014/03/08 职场文书
双创工作实施方案
2014/03/26 职场文书
女人创业励志语录,句句蕴含能量,激发你的潜能
2019/08/20 职场文书
win10清理dns缓存
2022/04/19 数码科技