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实现UrlEncode和UrlDecode的脚本代码
Jul 23 Javascript
FormValidate 表单验证功能代码更新并提供下载
Aug 23 Javascript
使用Jquery来实现可以输入值的下拉选单 雏型
Dec 06 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 Javascript
jQuery中mouseover事件用法实例
Dec 26 Javascript
javascript事件冒泡和事件捕获详解
May 26 Javascript
AngularJS 基础ng-class-even指令用法
Aug 01 Javascript
JS图片压缩(pc端和移动端都适用)
Jan 12 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 Javascript
Javascript实现的StopWatch功能示例
Jun 13 Javascript
微信小程序wx.request的简单封装
Nov 13 Javascript
JS+Canvas实现五子棋游戏
Aug 26 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实现小型站点广告管理(修正版)
2006/10/09 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
JQuery validate 验证一个单独的表单元素实例
2017/02/17 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
vue 实现tab切换保持数据状态
2020/07/21 Javascript
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python浅拷贝与深拷贝用法实例
2015/05/09 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
Python matplotlib画图与中文设置操作实例分析
2019/04/23 Python
django 数据库连接模块解析及简单长连接改造方法
2019/08/29 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
结构工程研究生求职信
2013/10/13 职场文书
职高毕业生自我鉴定
2013/10/21 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
应届生求职自荐信
2014/07/04 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2014年效能监察工作总结
2014/11/21 职场文书
2015年网管个人工作总结
2015/05/22 职场文书