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 相关文章推荐
jQuery each()方法的使用方法
Mar 18 Javascript
JavaScript实现select添加option
Jul 03 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
Bootstrap BootstrapDialog使用详解
Feb 17 Javascript
Vue.js bootstrap前端实现分页和排序
Mar 10 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
JS使用贪心算法解决找零问题示例
Nov 27 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
Aug 27 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
Sep 14 Javascript
JavaScript实现轮播图效果代码实例
Sep 28 Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 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
收音机指标测试方法及仪器
2021/03/01 无线电
php轻松实现中英文混排字符串截取
2014/05/28 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
flexslider.js实现移动端轮播
2017/02/05 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
vue 注册组件的使用详解
2018/05/05 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python单链表简单实现代码
2016/04/27 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
Python3.6基于正则实现的计算器示例【无优化简单注释版】
2018/06/14 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
python如何控制进程或者线程的个数
2020/10/16 Python
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
建筑结构施工专业推荐信
2014/02/21 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
员工福利申请报告
2015/05/15 职场文书
工作会议简报
2015/07/20 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers
Python中的socket网络模块介绍
2022/07/23 Python