JavaScript访问CSS属性的几种方式介绍


Posted in Javascript onJuly 21, 2014

JavaScript访问CSS属性的方式总体说来有两种:“通过元素访问”、“直接访问样式表”。另外访问样式的时候有一个不可忽略的问题——运行时样式。

1.通过元素访问

既然是要通过元素访问样式表,那么就应该先确定是哪个元素。这是DOM的内容,在此先不多说。获取引用之后就可以通过 “引用.style.要访问的属性” ,来访问某个属性。举个例子,看如下代码。

<pre name="code" class="html"><pre name="code" class="html"><!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style> 
#a{ 
height:100px; 
width:100px; 
background-color:red; 
} 
</style> 
</head> 
<body> 
<div id="a"></div> 
</body> 
</html>

当我们想要获取#a的背景色的时候就可以 document.getElementById("a").style.backgroundColor;这样就完成了访问,之后是要返回还是更改属性值那就随你便了。

2.直接访问样式表

直接访问样式表总的来说就是“先找到相应的样式块,然后在该样式块里找相应的样式规则,最后在该样式规则里找相应的样式”。

先说什么是样式块。在代码中,CSS代码会存在于<style></style>标签之间或<link>之中,一个<style></style>或<link>就是一个样式块。在代码中可能从上到下依次排列着多个代码块,我们可以像访问数组元素一样访问样式块。例如我们要访问样式块中的第一个,就可以document.styleSheets[0]

然后说什么是样式规则。先看如下代码

<pre name="code" class="html"><!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style> 
#a{ 
height:100px; 
width:100px; 
background-color:red; 
} 
#b{ 
height:100px; 
width:100px; 
background-color:blue; 
} 
</style> 
</head> 
<body> 
<div id="a"></div> 
<div id="b"></div> 
</body> 
</html>

代码中分别规定了#a和#b的样式,#a的样式的集合或#b的集合就是一个样式规则。在这个样式块中,对#a的是第一个样式规则,对#b的是第二个样式规则。我们同样可以像访问数组元素一样访问样式规则。例如我们要访问#b样式规则,就可以document.styleSheets[0].cssRules[1] 当然你可以选择这么写document.styleSheet[0].rules[1]但这种写法不被Firefox支持。

然后我们就可以访问相应的样式了。例如我们要把#b的背景色改成绿色,就可以document.styleSheets[0].cssRules[1].style.backgroundColor="green";

3.运行时样式

看如下代码:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<style> 
#a{ 
height:100px; 
width:100px; 
color:red; 
} 
#b{ 
height:100px; 
width:100px; 
} 
</style> 
</head> 
<body> 
<div id="a"> 
<div id="b">观察字体颜色</div> 
</div> 
</body> 
</html>

当我们运行alert(document.getElementById("b").style.color);的时候发现弹窗上什么都没输出,但页面的字体颜色明明是红色,为啥呢?这是因为每个元素的style对象属性并不是即时更新的。当我们要弹窗上输出红色的时候就要用运行时样式。window.getComputedStyle(document.getElementById("b"),null).color这样就可以访问到“红色”。访问运行时样式也有另外一种写法document.getElementById("b").currentStyle.color 但这种写法只有IE支持。

Javascript 相关文章推荐
jQuery 选择器、DOM操作、事件、动画
Nov 25 Javascript
javascript面向对象入门基础详细介绍
Sep 05 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
Aug 02 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
javascript 常用验证函数总结
Jun 28 Javascript
vue+iview+less 实现换肤功能
Aug 17 Javascript
利用Vue构造器创建Form组件的通用解决方法
Dec 03 Javascript
vue 动态表单开发方法案例详解
Dec 02 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
Feb 05 Javascript
javascript贪吃蛇游戏设计与实现
Sep 17 Javascript
利用PHP实现递归删除链表元素的方法示例
Oct 23 Javascript
javascript实现的元素拖动函数宿主为浏览器
Jul 21 #Javascript
javascript定义变量时有var和没有var的区别探讨
Jul 21 #Javascript
JQuery中$(document)是什么意思有什么作用
Jul 21 #Javascript
jquery显示隐藏input对象
Jul 21 #Javascript
jquery实现保存已选用户
Jul 21 #Javascript
jquery实现显示已选用户
Jul 21 #Javascript
jquery操作checkbox示例分享
Jul 21 #Javascript
You might like
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
7个JS基础知识总结
2014/03/05 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
jquery $.trim()去除字符串空格的实现方法【附图例】
2016/03/30 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
微信小程序开发之map地图组件定位并手动修改位置偏差
2019/08/17 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Python qrcode 生成一个二维码的实例详解
2020/02/12 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
应聘自荐信
2013/12/14 职场文书
师德师风的心得体会
2014/09/02 职场文书
导游词之青城山景区
2019/09/27 职场文书
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js