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实现简单时尚快捷的气泡提示插件
Dec 20 Javascript
js实现图片旋转的三种方法
Apr 10 Javascript
Javascript 数组排序详解
Oct 22 Javascript
jQuery判断指定id的对象是否存在的方法
May 22 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
React + webpack 环境配置的方法步骤
Sep 07 Javascript
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
Jun 19 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 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数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
php二维码生成以及下载实现
2017/09/28 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
JavaScript基础函数整理汇总
2015/01/30 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
javascript history对象详解
2017/02/09 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
jQuery操作attr、prop、val()/text()/html()、class属性
2019/05/23 jQuery
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
2018/01/10 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
Django Celery异步任务队列的实现
2019/07/24 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
tensorflow pb to tflite 精度下降详解
2020/05/25 Python
python 求两个向量的顺时针夹角操作
2021/03/04 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
2014年社区学雷锋活动总结
2014/03/09 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
高三励志标语
2014/06/05 职场文书
python 实现德洛内三角剖分的操作
2021/04/22 Python
Vue实现下拉加载更多
2021/05/09 Vue.js
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
JavaScript ES6的函数拓展
2022/01/18 Javascript