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 miscellanea -display data real time, using window.status
Jan 09 Javascript
初学Javascript的一些总结
Nov 03 Javascript
jquery下onpropertychange事件的绑定方法
Aug 01 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 Javascript
javascript中eval解析JSON字符串
Feb 27 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
js对象数组和对象的使用实例详解
Aug 27 Javascript
vue实现浏览器全屏展示功能
Nov 27 Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
Aug 27 Javascript
jQuery冲突问题解决方法
Jan 19 jQuery
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 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
php实现的二分查找算法示例
2017/06/20 PHP
php实现微信模拟登陆、获取用户列表及群发消息功能示例
2017/06/28 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
PHP array_reverse() 函数原理及实例解析
2020/07/14 PHP
JQuery autocomplete 使用手册
2010/04/01 Javascript
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
javascript实现dom元素可拖动
2016/03/21 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
基于JavaScript实现淘宝商品广告效果
2017/08/10 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Python中编写ORM框架的入门指引
2015/04/29 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
python suds访问webservice服务实现
2020/06/26 Python
5 分钟读懂Python 中的 Hook 钩子函数
2020/12/09 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
俄罗斯女装店:12storeez
2019/10/25 全球购物
个人近期表现材料
2014/02/11 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
毕业生政审意见范文
2015/06/04 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android