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 相关文章推荐
事件绑定之小测试  onclick &amp;&amp; addEventListener
Jul 31 Javascript
让元素在网页中可拖动示例代码
Aug 13 Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
javascript实现简单的二级联动
Mar 19 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
Mar 27 Javascript
Jquery中基本选择器用法实例详解
May 18 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
通过图带你深入了解vue的响应式原理
Jun 21 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
Sep 20 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 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 fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
php递归函数怎么用才有效
2018/02/24 PHP
一个网马的tips实现分析
2010/11/28 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
python进阶教程之文本文件的读取和写入
2014/08/29 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
python实现按行切分文本文件的方法
2016/04/18 Python
python实现树形打印目录结构
2018/03/29 Python
python模拟登陆,用session维持回话的实例
2018/12/27 Python
Python-openCV开运算实例
2020/07/05 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
美国家居装饰店:Pier 1
2019/09/04 全球购物
最新茶叶店创业计划书
2014/01/14 职场文书
小学课外活动总结
2014/07/09 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
干部个人考察材料
2014/12/24 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python
python中pymysql包操作数据库方法
2022/04/19 Python