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中__proto__与prototype的关系深入理解
Dec 04 Javascript
js实现一个省市区三级联动选择框代码分享
Mar 06 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
Aug 05 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
js实现简单计算器
Nov 22 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
Apr 10 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
Dec 03 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
Jun 03 Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
适用于 Vue 的播放器组件Vue-Video-Player操作
Nov 16 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
Parse正式发布开源PHP SDK
2014/08/11 PHP
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
Dojo 学习要点
2010/09/03 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
iframe中使用jquery进行查找的方法【案例分析】
2016/06/17 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
利用Angular7开发一个Radio组件的全过程
2019/07/11 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
简单理解Python中的装饰器
2015/07/31 Python
python模拟事件触发机制详解
2018/01/19 Python
python如何统计序列中元素
2020/07/31 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
Python socket聊天脚本代码实例
2020/01/02 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
自荐书范文范例
2014/02/13 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
创业计划书之农家乐
2019/10/09 职场文书
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript