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调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
JS兼容浏览器的导出Excel(CSV)文件的方法
May 03 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
Javascript中arguments用法实例分析
Jun 13 Javascript
JavaScript中模拟实现jsonp
Jun 19 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
Jul 01 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
angular2模块和共享模块详解
Apr 08 Javascript
vue中 数字相加为字串转化为数值的例子
Nov 07 Javascript
JS使用for in有序获取对象数据
May 19 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提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
PHP新手NOTICE错误常见解决方法
2011/12/07 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
2013/02/01 Javascript
通过onmouseover选项卡实现img图片的变化
2014/02/12 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Python pip配置国内源的方法
2020/02/14 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
物理教学随笔感言
2014/02/22 职场文书
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
买房协议书
2014/04/11 职场文书
高三励志标语
2014/06/05 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
社区活动总结范文
2015/05/07 职场文书
2015年测量员工作总结
2015/05/23 职场文书
《鲸》教学反思
2016/02/23 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android