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代码在页面加载时的执行顺序介绍
May 03 Javascript
js循环改变div颜色具体方法
Jun 25 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
利用Three.js如何实现阴影效果实例代码
Sep 26 Javascript
React Native AsyncStorage本地存储工具类
Oct 24 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
JS实现简单的文字无缝上下滚动功能示例
Jun 22 Javascript
layui前端时间戳转化实例
Nov 15 Javascript
js实现列表向上无限滚动
Jan 13 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 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
德生9700DX电路分析
2021/03/02 无线电
德生PL990的分析评价
2021/03/02 无线电
PHP 中文处理技巧
2010/04/25 PHP
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
nodeJs爬虫获取数据简单实现代码
2016/03/29 NodeJs
配置nodejs环境的方法
2017/05/13 NodeJs
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python中shutil模块的学习笔记教程
2017/04/04 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
神经网络相关之基础概念的讲解
2018/12/29 Python
python 对类的成员函数开启线程的方法
2019/01/22 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
基于python 取余问题(%)详解
2020/06/03 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
注塑工厂厂长岗位职责
2013/12/02 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
《锄禾》教学反思
2014/04/08 职场文书
企业职业病防治方案
2014/05/29 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
政工师工作总结2015
2015/05/26 职场文书
学雷锋活动简报
2015/07/20 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript