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 动态修改样式和层叠样式表的更多相关文章

  1. JavaScript DOM高级程序设计 5动态修改样式和层叠样式表2--我要坚持到底!

    把样式置于DOM脚本之外 style属性 我们可以这样设置前景色之类的属性: element.style.color='red'; 也可以使用下面的代码设置背景颜色: element.style.ba ...

  2. JavaScript DOM高级程序设计 5动态修改样式和层叠样式表1(源代码)--我要坚持到底!

    W3C DOM2样式规范 现在这边贴出本章要的源代码,注意要结合前面用到的ADS库http://vdisk.weibo.com/s/Dq8NU CSSStyleSheet对象属性: type :始终是 ...

  3. 微信小程序 JS动态修改样式

    微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...

  4. JQuery动态修改样式

    JQuery动态修改样式 SetStyle(); function SetStyle() { $(".toolbar").remove(); $(".placeholde ...

  5. 微信小程序开发小技巧——单击事件传参、动态修改样式、轮播样式修改等

    一. 脚本部分: 1. 表达式无效的处理: 如果你发现自己编写的表达式无效或者数据不展示,那么请先检查你的表达式是否有添加{{}},小程序中全部都要添加的,只要是在模板中调用js中的数据 2. 获取元 ...

  6. 【WPF】MVVM动态修改Bingding的另一种思路——用Style样式

    问题场景: 界面上有个ListBox控件,它的内容Item绑定了一个列表,即 ItemsSource =”{Binding StudentList}”.这个StudentList列表在该界面View对 ...

  7. 动态修改 dom 元素的伪类样式

    最近写代码,需要修改伪类的 content 属性,不想定义两个样式进行切换,而是直接通过 js 进行修改. html 中的伪类(如 a:hover / a:link / class::before / ...

  8. 微信小程序——动态修改页面数据(和样式)及参数传递

    1.1.1动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造 ...

  9. JavaScript基础之DOM修改样式

    1.获取或设置元素的内容:3个属性:   1. innerHTML: 获取或设置元素开始标签到结束标签之间的所有HTML代码原文.      何时使用:只要获得完整的html代码原文时      优化 ...

随机推荐

  1. 【leetcode】Binary Tree Right Side View(middle)

    Given a binary tree, imagine yourself standing on the right side of it, return the values of the nod ...

  2. July 4th, Week 28th Monday, 2016

    Goals determine what you are going to be. 你的目标决定你将成为怎样的人. What are your goals? What kind of people y ...

  3. !gluLookAt与glOrtho 参数解析

    void gluLookAt( GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLd ...

  4. 使用DateUtils和DateFormatUtils处理时间日期转换与SimpleDateFormat的区别

    在Apache Commons项目的Lang里面,有两个类:DateUtils和DateFormatUtils,专门用于处理时间日期转换.它们在 org.apache.commons.lang.tim ...

  5. backtracking(回溯算法)

    http://blog.csdn.net/zxasqwedc/article/details/42270215 permutation的程式码都会长成这样的格式: ] = { 'a', 'b', 'c ...

  6. poj1417(种类并查集+dp)

    题目:http://poj.org/problem?id=1417 题意:输入三个数m, p, q 分别表示接下来的输入行数,天使数目,恶魔数目: 接下来m行输入形如x, y, ch,ch为yes表示 ...

  7. ViewPager部分源码分析二:FragmentManager对Fragment状态的管理完成ViewPager的child添加或移出

    ViewPager维护child代码流程: 注:PagerAdapter 使用的是FragmentPagerAdapter类或者它的子类. viewPager.populate(): void pop ...

  8. gzip

    gzip -c 将输出写到标准输出上,并保留原文本 gzip * : 把当前目录中的每个文件压缩成.gz文件 [root@NB gzip]# ls mysql-bin. mysql-bin..tar ...

  9. js自定义延迟执行函数

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  10. python中如何用dis模块来查看py的汇编代码?

    之前测试不成功,用导入dis的方式. 但如何在命令行里加入 -m dis,就会OK啦. python -m dis test.py #coding: utf8 x = [1, 2, 3] for i ...