DOM--5 动态修改样式和层叠样式表
W3C DOM2 样式规范##
CSSStyleSheet对象###
表示所有css样式表,包括外部link
和嵌入style
的;通过document.styleSheets
属性可以获得文档中CSSStyleSheet对象的列表;其中每个CSSStyleSheet都具有以下属性:
- type: 值始终是text/css;
- disabled: 布尔值,表示相应的样式表是否应用与当前文档(false)还是被禁用(true);
- href: 样式表路径,嵌入的则是null;
- media: 表示样式表应用的目标设备, 中的media属性
- cssRules: 是一个只读的CSSRuleList列表对象,包含样式表中所有的CSSRule对象;
- insertRule(rule, index): 添加新的样式声明;index表示列表对象cssRules的值;
- deleteRule(index), 用于样式表中移除规则;
CSSStyleRule对象###
每个CSSStyleSheet对象内部包含着一组CSSStyleRule对象 document.styleSheets[0].cssRule
, 每个对象 document.styleSheets[0].cssRule[0]
有如下属性:
- type, 继承自CSSRule对象的一个属性,对CSSStyleRule类型而言是1;
- cssText: 包含以只付出形式表示的当前状态下的全部规则;如果这些规则被其他DOM方法改变了,那么这个字符串也会相应改变;
- parentStyleSheet: 引用父CSSStyleSheet对象;
- parentRule: 如果规则位于另一个规则中,该属性则引用另一个CSSRule对象;
- selectorText: 包含规则的选择符;
CSSStyleDeclaration对象###
这是用的最多的对象,表示一个元素的style属性(内嵌在元素中的值) A.$('a').style
- cssText:包含以字符串形式表示的全部规则;
- parentRule: 讲引用CSSStyleRule对象;
- getPropertyValue(propertyName), 返回一个字符串形式的CSS样式属性值;
- removeProperty(propertyName), 从声明中移除特定的属性;
- setProperty(propertyName, value, priotity), 用于设置特定css属性的值;
把样式置于DOM脚本之外##
style属性###
注意通过此属性只能访问到在元素的style属性中以嵌入方式声明的css属性,无法访问层叠样式表或从父类继承的属性
- element.style.setProperty('background-color','red'); //在ie8及以下无效
- element.style.backgroundColor = 'red';//都有效
style引用的是HTMLElement对象的style属性,本身是CSSStyleDeclaration对象;一般使用第一种并兼容第二种
基于className切换样式###
- element.setAttribute('class','newClassName'); //在ie8及以下无效
- element.className = 'newClassName'; //都有效
className引用的是HTMLElement对象的class属性,兼容性考虑一般用第二种方法
切换样式表###
- 使用备用的样式表
常用属性
* type
* href
* media
* rel, 表示样式表于文档之间的关系
* 设置'stylesheet' 指定一个样式表立即应用到文档
* 设置'alternate stylesheet' 将其作为备用样式表;浏览器载入该样式表时会将其disbaled设置为true;
* disabled, 表示样式表是否起作用
* title, 标题,也在脚本中用到;
通过js操作disabled值改变样式
- 切换body元素的className
先用设置公用样式,然后分别设置body.a;body.b等及下面的元素样式;最后通过改变body的classname来改变样式
- 动态载入和移除样式表
直接通过js删减样式表
修改css规则###
- document.styleSheets能获得所有内嵌和外链的样式表,可以通过href判断
访问计算样式###
DOM2样式规范在document.defaultView中包含了一个getComputedStyle()方法;返回一个只读的CSSStyleDeclaration对象
var elemet = A.$('example');
var styles = document.defaultVIew.getComputedStyle(element);
var color = styles.getProperty('background-color');
简单的渐变效果###
function fadeColor(from ,to ,callback , duration, framesPerSecond) {
function doTimeout(color, frame) {
setTimeout(function() {
try{
callback(color);
} catch(e) {
A.log.write(e);
}
}, (duration * 1000 / framesPerSecond) * frame );
}
var duration = duration || 1;
var framesPerSecond = framesPerSecond || duration * 15;
var r, g ,b;
var frame = 1;
doTimeout('rgb(' + from.r + ',' + from.g + ',' + from.b + ')', 0);
while(frame < framesPerSecond + 1) {
r = Math.ceil(from.r * ((framesPerSecond - frame) / framesPerSecond) + to.r * (frame / framesPerSecond));
g = Math.ceil(from.g * (framesPerSecond - frame) / framesPerSecond + to.g * (frame / framesPerSecond));
b = Math.ceil(from.b * ((framesPerSecond - frame) / framesPerSecond) + to.b * (frame / framesPerSecond));
doTimeout('rgb(' + r + ',' + g + ',' + b + ')', frame);
frame++;
}
}
fadeColor({r:0, g:255, b:0}/*开始颜色*/, {r: 255, g:255, b:255}/*结束颜色*/, function(color) {
A.setStyleById('style', {'background-color': color})
});
DOM--5 动态修改样式和层叠样式表的更多相关文章
- JavaScript DOM高级程序设计 5动态修改样式和层叠样式表2--我要坚持到底!
把样式置于DOM脚本之外 style属性 我们可以这样设置前景色之类的属性: element.style.color='red'; 也可以使用下面的代码设置背景颜色: element.style.ba ...
- JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!
W3C DOM2样式规范 现在这边贴出本章要的源代码,注意要结合前面用到的ADS库http://vdisk.weibo.com/s/Dq8NU CSSStyleSheet对象属性: type :始终是 ...
- 微信小程序 JS动态修改样式
微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...
- JQuery动态修改样式
JQuery动态修改样式 SetStyle(); function SetStyle() { $(".toolbar").remove(); $(".placeholde ...
- 微信小程序开发小技巧——单击事件传参、动态修改样式、轮播样式修改等
一. 脚本部分: 1. 表达式无效的处理: 如果你发现自己编写的表达式无效或者数据不展示,那么请先检查你的表达式是否有添加{{}},小程序中全部都要添加的,只要是在模板中调用js中的数据 2. 获取元 ...
- 【WPF】MVVM动态修改Bingding的另一种思路——用Style样式
问题场景: 界面上有个ListBox控件,它的内容Item绑定了一个列表,即 ItemsSource =”{Binding StudentList}”.这个StudentList列表在该界面View对 ...
- 动态修改 dom 元素的伪类样式
最近写代码,需要修改伪类的 content 属性,不想定义两个样式进行切换,而是直接通过 js 进行修改. html 中的伪类(如 a:hover / a:link / class::before / ...
- 微信小程序——动态修改页面数据(和样式)及参数传递
1.1.1动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造 ...
- JavaScript基础之DOM修改样式
1.获取或设置元素的内容:3个属性: 1. innerHTML: 获取或设置元素开始标签到结束标签之间的所有HTML代码原文. 何时使用:只要获得完整的html代码原文时 优化 ...
随机推荐
- WP8 双击返回键退出
bool isExit = false; // 构造函数 public MainPage() { InitializeComponent(); isExit = false; // 用于本地化 App ...
- 异常处理__try{}__except(EXCEPTION_EXECUTE_HANDLER){}
在一个函数中不能混合使用 try{}catch(CException *e){} 与 __try{}__except(EXCEPTION_EXECUTE_HANDLER){} 编译时报错 error ...
- 关于Windows下的文件后缀名问题
一.背景说明 有很多的小伙伴对windows下的文件后缀名不能很好地理解作用和区别,更不用说高深的使用了,在这里给大家说一下这些文件后缀名到底有什么区别,有什么作用呢? 二.说明 简单的说来,wind ...
- [Android Pro] Gradle Tips#1-tasks
reference to : http://trickyandroid.com/gradle-tip-1-tasks/ http://blog.csdn.net/lzyzsd/article/deta ...
- Innodb之拷贝InnoDB表从一服务器到另一台服务器2
本章节阐述将表移动到不同server上的技术.如可以将整个Mysql 实例转移到更大.更快的Server上:也可以拷贝整个实例到Slave上:也可以拷贝单个表或某些表到其他Server上(数据仓库). ...
- 使用vsphere client 克隆虚拟机
免费的VMWare ESXi5.0非常强大,于是在vSphere5.0平台中ESXi取代了ESX.,使用ESXi经常会遇到这样的问题,我需要建立多个虚拟机,都是windows2003操作系统,难道必须 ...
- No space left on device you must specify the filesystem type--Linux重启挂在失败
在Linux中拷贝了一个文件比较大5G,直接提示:No SPace Left On Device,很明显是磁盘空间不够了,我因为是在虚拟机上面建的,直接右击虚拟机==>编辑设置 如图片1所示, ...
- XMPP框架下微信项目总结(7)聊天通信处理-发送,接受数据
前言:通其他的功能处理一样,聊天也是通过模块发起的成为:“消息模块” 原理:1 current客户端开启通过消息模块开启并监听消息(监听通过代理). 2 当“current客户端”收到来自“other ...
- PHP之MVC项目实战(二)
本文主要包括以下内容 GD库图片操作 利用GD库实现验证码 文件上传 缩略图 水印 GD库图片操作 <?php $img = imagecreatetruecolor(500, 300); // ...
- Python下安装MySQLdb
前提是你已经安装过mysql 1.从https://pypi.python.org/pypi/MySQL-python/下载MySQL-python,然后用rz命令上传到相关目录 2.用tar -zx ...