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中继承的三种方式
Oct 16 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
jQuery Easyui快速入门教程
Aug 21 Javascript
JS 拼凑字符串的简单实例
Sep 02 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
Oct 24 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
Nov 07 Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
Jan 27 Javascript
微信小程序分包加载代码实现方法详解
Sep 23 Javascript
微信小程序实现多图上传
Jun 19 Javascript
WebStorm中如何将自己的代码上传到github示例详解
Oct 28 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 ? EasyUI DataGrid 资料存的方式介绍
2012/11/07 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
js实现文章文字大小字号功能完整实例
2014/11/01 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
jQuery原理系列-css选择器的简单实现
2016/06/07 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
jquery简单实现纵向的无缝滚动代码实例
2019/04/01 jQuery
js实现漂亮的星空背景
2019/11/01 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
Python登录注册验证功能实现
2018/06/18 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
详解Python3中的 input() 函数
2020/03/18 Python
python实时监控logstash日志代码
2020/04/27 Python
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
人民教师求职自荐信
2014/03/12 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
感恩之星事迹材料
2014/05/03 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
总经理检讨书
2014/09/15 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
2014年保育员工作总结
2014/12/02 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Python自动化实战之接口请求的实现
2022/05/30 Python