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 相关文章推荐
JS类的封装及实现代码
Dec 02 Javascript
javascript判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
Aug 02 Javascript
html5+javascript制作简易画板附图
Apr 25 Javascript
浅谈javascript 函数内部属性
Jan 21 Javascript
利用JavaScript脚本实现滚屏效果的方法
Jul 07 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
Apr 11 Javascript
详解ES6 Promise的生命周期和创建
Aug 18 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
Oct 09 Javascript
JS实现打字游戏
Dec 17 Javascript
JS深入学习之数组对象排序操作示例
May 01 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 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中去掉字符串首尾空格的方法
2012/05/19 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
Jquery常用技巧收集整理篇
2010/11/14 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
Javascript Worker子线程代码实例
2020/02/20 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python自动裁剪图像代码分享
2017/11/25 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Scrapy框架介绍之Puppeteer渲染的使用
2020/06/19 Python
python3排序的实例方法
2020/10/20 Python
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
优秀学生获奖感言
2014/02/15 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
白岩松演讲
2014/05/21 职场文书
诚信承诺书
2015/01/19 职场文书
工作自我评价范文
2015/03/05 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang