JavaScript访问样式表代码


Posted in Javascript onOctober 15, 2010

比如:当我们将鼠标移动到一个图标上的时候,图标会出现一些动画效果(渐变放大、闪动、更换颜色等),而这一切的友好效果基本上都跟样式(style)有关,所以这一篇,我学习JavaScript对style的操作。

技术关键点:style。这一篇要求我们对CSS样式有一定的了解。(读者可以google一下CSS的相关内容)

操作步骤:

1、页面代码(包括JS代码)如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head> 
<title>Style Example</title> 
<style type="text/css"> 
div.special 
{ 
background-color:Red; 
height:50px; 
width:50px; 
} 
</style> <script type="text/javascript"> 
function getBackGroundColor() { 
var oDiv = document.getElementById("div1"); 
alert(oDiv.style.backgroundColor); 
} 
</script> 
</head> 
<body> 
<div id="div1" class="special"></div> 
<input type="button" value="Get BackGround Color" onclick="getBackGroundColor();"/> 
</body> 
</html>

JS代码中获得了div对象,并输出了div对象的背景颜色,一切看起来都那么完美,可是效果总是让我们失望,如下:
JavaScript访问样式表代码
这样看来,JavaScript以这种方式去访问CSS样式无法达到效果,原因:CSS数据并非存储在style属性中,而是存储在类中。所以接下来要做的:就是怎么样去访问CSS类?

2、幸运的是,我们找到了document.styleSheets集合。document.styleSheets包含了html页面中所有样式表的引用和所有的<style>元素。

因为浏览器的不同,访问样式表中单独的规则(规则:指定是CSS类,例如上面html代码中的div.special)的方法是不同的。DOM为每一个样式表指定一个cssRules的集合,但是IE却把这个集合命名为rules。所以在获取样式集合之前,代码需要做一个技巧性的改动:

oCSSRules = document.styleSheets[0].cssRules || document.styleSheets[0].rules;

每个规则都包含selectorText特性,div.special就是上面html中CSS规则的selectorText的值。规则还包含style属性,这个时候就可以通过style属性获取背景颜色了。来看代码吧:

function getBackGroundColor() { 
var oCSSRules = document.styleSheets[0].cssRules || document.styleSheets[0].rules; 
alert(oCSSRules[0].style.backgroundColor); 
}

代码效果:
JavaScript访问样式表代码
3、这个时候,你可用通过修改样式来改变背景颜色,但是最好不要这样做,因为你改掉的是CSS类,其他引用了改CSS类的元素也会改变背景颜色,所以如果需要修改样式,做好直接修改单个元素的style属性,比如:document.getElementById("div1").style.backgroundColor="Blue";
Javascript 相关文章推荐
javascript下查找父节点的简单方法
Aug 13 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
Dec 14 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
jQuery页面刷新(局部、全部)问题分析
Jan 09 Javascript
AngularJS 模型详细介绍及实例代码
Jul 27 Javascript
Javascript中内建函数reduce的应用详解
Oct 20 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
对vue中methods互相调用的方法详解
Aug 30 Javascript
JavaScript实现连连看连线算法
Jan 05 Javascript
vue请求本地自己编写的json文件的方法
Apr 25 Javascript
IE下js调试工具Companion.JS
Oct 15 #Javascript
jquery $.ajax各个事件执行顺序
Oct 15 #Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 #Javascript
jquery 元素相对定位代码
Oct 15 #Javascript
JQuery小知识
Oct 15 #Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
Oct 15 #Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
Oct 14 #Javascript
You might like
PHP脚本的10个技巧(1)
2006/10/09 PHP
php析构函数的简单使用说明
2015/08/24 PHP
php面向对象值单例模式
2016/05/03 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
php+mysql+jquery实现日历签到功能
2017/02/27 PHP
prototype Element学习笔记(Element篇三)
2008/10/26 Javascript
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
2016/12/18 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
浅谈JS封闭函数、闭包、内置对象
2017/07/18 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python简单区块链模拟详解
2019/07/03 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
Python数组拼接np.concatenate实现过程
2020/04/18 Python
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
物理教师自荐信范文
2013/12/28 职场文书
优秀毕业生求职信范文
2014/01/02 职场文书
接受捐赠答谢词
2014/01/27 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
2014年道德讲堂实施方案
2014/03/05 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
学术诚信承诺书
2014/05/26 职场文书
婚宴领导致辞
2015/07/28 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL