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 相关文章推荐
JTrackBar水平拖动效果
Jul 15 Javascript
克隆javascript对象的三个方法小结
Jan 12 Javascript
js数组转json并在后台对其解析具体实现
Nov 20 Javascript
纯css+js写的一个简单的tab标签页带样式
Jan 28 Javascript
Backbone.js的一些使用技巧
Jul 01 Javascript
php利用curl获取远程图片实现方法
Oct 26 Javascript
利用three.js画一个3D立体的正方体示例代码
Nov 19 Javascript
jQuery实现定时隐藏对话框的方法分析
Feb 12 jQuery
webpack源码之loader机制详解
Apr 06 Javascript
微信小程序下拉框功能的实例代码
Nov 06 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
ES6 Symbol数据类型的应用实例分析
Jun 26 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
《魔兽世界》惊魂幻象将获得调整
2020/03/08 其他游戏
php 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP中time(),date(),mktime()区别介绍
2013/09/28 PHP
php生成gif动画的方法
2015/11/05 PHP
php上传excel表格并获取数据
2017/04/27 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
解决在laravel中auth建立时候遇到的问题
2019/10/15 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
代码生成器 document.write()
2007/04/15 Javascript
jquery库或JS文件在eclipse下报错问题解决方法
2014/04/17 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
JS+CSS实现的蓝色table选项卡效果
2015/10/08 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
nodejs根据ip数组在百度地图中进行定位
2017/03/06 NodeJs
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
javascript实现超好看的3D烟花特效
2020/01/01 Javascript
在Python中操作字符串之replace()方法的使用
2015/05/19 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
pycharm安装和首次使用教程
2018/08/27 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
python文件及目录操作代码汇总
2020/07/08 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
会计专业个人求职信范文
2014/01/08 职场文书
红旗方阵解说词
2014/02/12 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
教师节活动总结
2014/08/29 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
优秀党员推荐材料
2014/12/18 职场文书
邀请函怎么写
2015/01/30 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android
浅谈克隆 JavaScript
2021/11/02 Javascript