原生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 ui对话框实例代码
May 10 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
15款最好的Bootstrap在线编辑器
Aug 03 Javascript
学习vue.js计算属性
Dec 03 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 Javascript
Node层模拟实现multipart表单的文件上传示例
Jan 02 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
vue使用vue-i18n实现国际化的实现代码
Apr 08 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
详解JavaScript的变量
Apr 04 Javascript
layui多图上传实现删除功能的例子
Sep 23 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实现的简单适配器模式示例
2017/06/22 PHP
Js sort排序使用方法
2011/10/17 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
第一次接触神奇的Bootstrap
2016/10/14 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
2014/06/10 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
办公用房租赁协议书
2014/11/29 职场文书
小学生手册家长意见
2015/06/03 职场文书
工作时间证明
2015/06/15 职场文书
追悼会悼词大全
2015/06/23 职场文书
公司酒会致辞
2015/07/30 职场文书
聘任通知书
2015/09/21 职场文书
小学语文教师研修日志
2015/11/13 职场文书
2016高考寄语集锦
2015/12/04 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
MySQL创建管理KEY分区
2022/04/13 MySQL