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 相关文章推荐
列表内容的选择
Jun 30 Javascript
jquery 结合C#后台的数组对文章的关键字自动添加链接的代码
Jul 15 Javascript
js 限制数字 js限制输入实现代码
Dec 04 Javascript
jQuery中多个元素的Hover事件解决方案
Jun 12 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
Sep 14 Javascript
jQuery编写设置和获取颜色的插件
Jan 09 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
vue实现axios图片上传功能
Aug 20 Javascript
layui的layedit富文本赋值方法
Sep 18 Javascript
VUE动态生成word的实现
Jul 26 Javascript
通过vue刷新左侧菜单栏操作
Aug 06 Javascript
MutationObserver在页面水印实现起到的作用详解
Jul 07 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中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
浅谈php(codeigniter)安全性注意事项
2017/04/06 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
Python中的类与对象之描述符详解
2015/03/27 Python
介绍Python中的文档测试模块
2015/04/28 Python
python获取外网ip地址的方法总结
2015/07/02 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
python中Mako库实例用法
2020/12/31 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
5.1手机促销活动
2014/01/17 职场文书
活动策划邀请函
2014/02/06 职场文书
百家讲坛观后感
2015/06/12 职场文书