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 easyui的tabs使用时的问题
Mar 23 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
Jun 28 Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
JS定时器实现数值从0到10来回变化
Dec 09 Javascript
浅谈javascript alert和confirm的美化
Dec 15 Javascript
深入理解node.js之path模块
May 03 Javascript
基于vue cli 通过命令行传参实现多环境配置
Jul 12 Javascript
使用apifm-wxapi模块中的问题及解决方法
Aug 05 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
May 13 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
Aug 08 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二维数组排序方法(array_multisort usort)
2013/12/25 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
js实现限定区域范围拖拉拽效果
2020/11/20 Javascript
[04:54]DOTA2 2017国际邀请赛:上届冠军WINGS采访短片
2017/08/09 DOTA
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Hadoop中的Python框架的使用指南
2015/04/22 Python
python实现中文转换url编码的方法
2016/06/14 Python
python3学习笔记之多进程分布式小例子
2018/02/13 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python实现两张图片的像素融合
2019/02/23 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Pytorch环境搭建与基本语法
2020/06/03 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
留学自荐信
2013/10/10 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2014年纠风工作总结
2014/12/08 职场文书
2015年教师新年寄语
2014/12/08 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
2016消防宣传标语口号
2015/12/26 职场文书
python执行js代码的方法
2021/05/13 Python