原生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 相关文章推荐
动态调用css文件——jquery的应用
Feb 20 Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 Javascript
js对象与打印对象分析比较
Apr 23 Javascript
javascript给span标签赋值的方法
Nov 26 Javascript
Angularjs中如何使用filterFilter函数过滤
Feb 06 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
bootstrap的工具提示实例代码
May 17 Javascript
gulp教程_从入门到项目中快速上手使用方法
Sep 14 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 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
数据库的日期格式转换
2006/10/09 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
2016/05/18 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
Vue项目安装插件并保存
2019/01/28 Javascript
Weex开发之WEEX-EROS开发踩坑(小结)
2019/10/16 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
Layui实现主窗口和Iframe层参数传递
2019/11/14 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python下载图片实现方法(超简单)
2017/07/21 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
Django中的ajax请求
2018/10/19 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
.NET方向面试题
2014/11/20 面试题
电子商务专业学生的学习自我评价
2013/10/27 职场文书
童装店创业计划书
2014/01/09 职场文书
大学新生军训方案
2014/05/03 职场文书
护士医德医风自我评价
2014/09/15 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
钱学森电影观后感
2015/06/04 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技