js基础获取元素样式
在学习DOM的时候就看到通过三种方法来获取元素样式值。
一、元素.style
只能 获取 行内样式,就是标签里面写的style样式。无法获取到定义在<style></style>和通过<link href="css.css">加载进来的样式属性
[code]<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <button onclick="btn();">点击</button> <div id="box1" style="background:red ;width: 200px; height: 200px;"> </div> <script> function btn(){ var box1 = document.getElementById("box1"); alert(box1.style.backgroundColor); }; </script> </body> </html>
二、 currentStyle
这个属性只有IE支持
语法:元素.currenStyle.样式名
[code]<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>获取元素样式</title> <style type="text/css"> #box1{ width: 100px; height: 100px; background-color: red; } </style> </head> <body> <button onclick="btn()">点我一下</button> <br /><br /> <div id="box1"></div> <script> var box1= document.getElementById("box1"); function btn(){ alert(box1.currentStyle.width); }; </script> </body> </html>
三、getComputedStyle
getComputedStyle() 获取当前元素当前样式,这个方法是Window的方法,可以直接用, 需要2个参数
第一个:要获取样式元素
第二个:可以传输一个伪元素。一般都传Null
该方法返回一个对象,对象 中封装了当前元素的对应的样式
可以通过对象.样式名读取样式
如果获取样式没有设置,则会获取到真实的值 而不是默认值
比如 没有设置width,获取的是具体的宽度,而不是auto
但是IE8及以下的浏览器不适合
[code]<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>获取元素样式</title> <style type="text/css"> #box1{ width: 100px; height: 100px; background-color: red; } </style> </head> <body> <button onclick="btn()">点我一下</button> <br /><br /> <div id="box1"></div> <script> var box1= document.getElementById("box1"); function btn() { var obj=getComputedStyle(box1,null); alert(obj.width); }; </script> </body> </html>
是不是感觉特别的苦恼,万一用户想知道我這个是什么样式的,但是我又不知道用户用的什么浏览器,currentStyle适合IE浏览器,getComputedStyle()这个适合正常的浏览器(除了IE8及其以下的)2个又不能同时共用 ,你想到了什么办法了吗?解决这个兼容性的问题
对的,没错,我们可以设置一个方法来封装它
[code]<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>获取元素样式</title> <style type="text/css"> #box1{ width: 100px; height: 100px; background-color: red; } </style> </head> <body> <button onclick="btn()">点我一下</button> <br /><br /> <div id="box1"></div> <script> var box1= document.getElementById("box1"); function btn(){ alert(getStyle(box1,"width")); }; /*定义一个函数,用来获取指定元素的当前样式 * * 参数:obj 要获取的元素 * 参数:name 要获取的样式名 * * */ function getStyle(obj,name){ //正常的浏览器方式 //return getComputedStyle(name,null)[name]; //ie8的方式 //return obj.currenStyle[name]; if(window.getComputedStyle){ return getComputedStyle(obj,null)[name]; }else{ return obj.currenStyle[name]; } } </script> </body> </html>
阅读更多
- js获取元素样式属性值 - 较为灵活的函数
- 原生js获取元素最终样式
- 原生js获取元素样式的简单方法
- js获取元素的外链样式
- 原生js获取元素样式
- js 获取元素的具体样式信息getcss(实例讲解)
- 原生Js获取元素样式属性值的方法
- JS基础回顾,小练习(获取一个对象里面第一层元素的数量)
- js正确获取元素样式详解
- js中如何获取元素样式
- JS获取和修改元素样式的实例代码
- js、jquery获取、设置元素属性与样式
- js获取元素css样式表中的样式
- JS获取元素样式
- js中获取元素自身样式
- js获取元素的外链样式
- 原生js获取元素的样式信息
- 用JS获取不到元素样式信息的"Bug"?
- JS获取元素属性、样式getComputedStyle()和currentStyle方法兼容性问题
- js获取元素样式的具体信息