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 相关文章推荐
javascript 闭包详解
Feb 15 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
Jan 12 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
May 05 Javascript
js判断浏览器是否支持严格模式的方法
Oct 04 Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 Javascript
表单元素值获取方式js及java方式的简单实例
Oct 15 Javascript
AngularJS模仿Form表单提交的实现代码
Dec 08 Javascript
基于Axios 常用的请求方法别名(详解)
Mar 13 Javascript
详解webpack 入门与解析
Apr 09 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
Aug 17 Javascript
解决vue无法侦听数组及对象属性的变化问题
Jul 17 Javascript
TypeScript实用技巧 Nominal Typing名义类型详解
Sep 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实现验证码功能
2006/10/09 PHP
php中header跳转使用include包含解决参数丢失问题
2015/05/08 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
JS作为值的函数用法示例
2016/06/20 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
Python切换pip安装源的方法详解
2016/11/18 Python
python中的随机函数小结
2018/01/27 Python
python实现自动发送报警监控邮件
2018/06/21 Python
Python中的取模运算方法
2018/11/10 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
手把手教你进行Python虚拟环境配置教程
2020/02/03 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
值类型与引用类型有什么不同?请举例说明?并分别列举几种相应的数据类型
2015/10/24 面试题
出国考察邀请函
2014/01/21 职场文书
实验教师岗位职责
2014/02/13 职场文书
财产保全担保书范文
2014/04/01 职场文书
2014年党支部学习材料
2014/05/19 职场文书
公司外出活动方案
2014/08/14 职场文书
美术教师个人总结
2015/02/06 职场文书
教师年终个人总结
2015/02/11 职场文书
给病人的慰问信
2015/03/23 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
centos7安装mysql5.7经验记录
2022/05/02 Servers