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 autocomplete插件修改
Apr 17 Javascript
JSON 编辑器实现代码
Dec 06 Javascript
基于jQuery的history历史记录插件
Dec 11 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
Jan 02 Javascript
javascript闭包(Closure)用法实例简析
Nov 30 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
May 09 Javascript
JS HTML5实现拖拽移动列表效果
Aug 27 Javascript
bootstrap中模态框、模态框的属性实例详解
Feb 17 Javascript
JS获取一个表单字段中多条数据并转化为json格式
Oct 17 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
Sep 14 Javascript
vue开发简单上传图片功能
Jun 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
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
使用jQuery插件创建常规模态窗口登陆效果
2013/08/23 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
jquery动画效果学习笔记(8种效果)
2015/11/13 Javascript
JavaScript、jQuery与Ajax的关系
2016/01/24 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
2016/05/19 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
vue小白入门教程
2018/04/02 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
axios携带cookie配置详解(axios+koa)
2018/12/28 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
python对字典进行排序实例
2014/09/25 Python
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
python动态加载包的方法小结
2016/04/18 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
python中如何使用insert函数
2020/01/09 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
幼儿教师研修感言
2014/02/12 职场文书
知识竞赛主持词
2014/03/26 职场文书
交通局领导班子群众路线教育实践活动对照检查材料思想汇报
2014/10/09 职场文书
工作后的感想
2015/08/07 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python