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 相关文章推荐
js实现touch移动触屏滑动事件
Apr 17 Javascript
jquery实现数字输入框
Feb 22 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
JavaScript实现时间表动态效果
Jul 15 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
AngularJS自定义过滤器用法经典实例总结
May 17 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
May 13 Javascript
json 带斜杠时如何解析的实现
Aug 12 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
Sep 27 Javascript
vue 限制input只能输入正数的操作
Aug 05 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 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
oracle资料库函式库
2006/10/09 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php中session使用示例
2014/03/29 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
Select2.js下拉框使用小结
2016/10/24 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
详解python中requirements.txt的一切
2017/03/03 Python
pandas带有重复索引操作方法
2018/06/08 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
django云端留言板实例详解
2019/07/22 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
公益活动策划方案
2014/01/09 职场文书
项目投资意向书
2014/04/01 职场文书
什么是就业协议书
2014/04/17 职场文书
科学育儿宣传标语
2014/10/08 职场文书
出租车拒载检讨书
2015/01/28 职场文书
员工辞职信怎么写
2015/02/27 职场文书
暑期实践个人总结
2015/03/06 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
关于环保的广播稿
2015/12/17 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
导游词之西安骊山
2019/12/03 职场文书
Nginx实现高可用集群构建(Keepalived+Haproxy+Nginx)
2021/05/27 Servers