javascript 动态修改样式和层叠样式表代码


Posted in Javascript onApril 27, 2010

W3C DOM2样式规则
==========================================================
CSSStyleSheet对象
  CSSStyleSheet对象表示的是所有CSS样式表,包括外部样式表和使用<style type="text/css"></style>标签指定的嵌入式样式表。
CSSStyleSheet同样构建于其他的DOM2 CSS对象基础之 上,而CSSStyleRule对象表示的则样式表中的每条规则。

通过document.stylesheets属性可以取得文档中CSSStyleSheet对象的列表,其中每个对象有下列属性

type

始终为text/css

disabled

相应样式表是应于还是禁用于当前文档
  href

样式表相对于当前文档的URL

title

分组样式标签

media

样式应用的目标设备类型(screen、print)

ownerRule

只读CSSRule对象,若样式用@import导入,表示其父规则

cssRules

 只读cssRuleList列表对象,包含样式表中所有CSSRule对象

==========================================================

insertRule(rule,index)

添加新的样式声明

deleteRule(index)

  从样式表中移除规则
CSSStyleRule对象

每个CSSStyleSheet对象内部包含着一组CSSStyleRule对象。这些对象分别对应着类似下面这样一条规则:

boyd{
 

font:lucida,verdana,sans-serif;

background:#c7600f;

color:#1a3800;

}
CSSStyleRule对象具有下列属性:

type

继承自CSSRule对象的一个属性,以0~6中的一个数字表示规则类型

cssText

以字符串形式表示的当前状态下的全部规则

parentStyleSheet

引用父CSSStyleRule对象

parentRule

  如果规则位于另一规则中,该属性引用另一个CSSRule对象

selectorText

包含规则的选择符

style

与HTMLElement.style相似,是CSSStyleDeclaration对象的一个实例
CSSStyleDeclaration对象

表示一个元素的style属性,与CSSStyleRule对象类似,CSSStyleDeclaration具有下面属性:

cssText

以字符串形式表示的全部规则

parentRule

将引用CSSStyleRule对象

==========================================================

getPropertyValue(propertyName)

CSS样式属性值

removeProperty(propertyName)

从声明中移除属性

setProperty(propertyName,value,priority)

设置CSS属性值
把样式置于DOM脚本之外
=========================================================
style属性

style属性本身是一个表示特定元素的所有不同CSS样式的CSSStyleDeclaration对象,通过style属性只能访问到在元素的style属性中以嵌入方式声明的CSS属性。换句话说,通过style属性无法访问到由多重样式表层叠而来或者从父元素继承的CSS属性。

element.style.backgroundColor = 'red';//background-color被转换为大小写形式,必须的 
//设置id为"example"的元素的样式 
setStyleById('example',{ 

'background-color' 
: 
'red', 

'border'


 :
'1px solid black', 

'padding'


 :
'1px', 

'margin'


 :
'1px' 
}); 
function setStyle(elementid,styles){  

var element = document.getElementById(elementid); 

//循环遍历styles对象并应用每个属性 

for(property in styles){ 


//非styles直接定义的属性 


if(!styles.hasOwnProperty(property)) continue; 


 


if(element.style.setProperty){ 



element.style.setProperty(uncamlize(property, '-'), styles[property], null); 


} else { 



element.style[camelize(property)] = styles[property]; 


} 

} 

 

return true; 
} 
//将word-word转换为wordWord 
function camelize(s) { 
return s.replace(/-(\w)/g, function(math,p1){ 
return p1.toUpperCase(); 
}); 
} 
//将wordWord转换为word-word 
function uncamelize(s, sep) { 
sep = sep || '-'; 
return s.replace(/([a-z])([A-Z])/g, function (match, p1, p2){ 
return p1 + sep + p2.toLowerCase(); 
}); 
} 
//基于className切换样式 
element.className += 'newclass';

访问计算样式

在修改一个元素的表现之前,你可能希望首先确定它当前的样式属性,由于元素的style属性只适用于以嵌入式方式定义的样式,因此无法通过style取得计算样式,DOM2规范在document.defaultView中包含一个名叫getComputedStyle()的方法,该方法返回一个只读的CSSStyleDeclaration对象,包含特定元素的所有计算样式,如下:

var styles = document.defaultView.getComputedStyle(element); 

var color = styles.getProperty('background-color');

但是Microsoft有自己的属性element.currentStyle版本
//取得一元素的计算样式 
function getStyle(element,property) { 
var value = element.style[camelize(property)]; 

if(!value) { 


if(document.defaultView && document.defaultView.getComputedStyle) { 



value = document.defaultView.getComputedStyle(element).getPropertyValue(property); 


} else if(element.currentStyle) { 



value = element.currentStyle[camelize(property)]; 

 
} 

} 

return value; 
}
Javascript 相关文章推荐
jquery 可拖拽的窗体控件实现代码
Mar 21 Javascript
JavaScript中:表达式和语句的区别[译]
Sep 17 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
JScript中的条件注释详解
Apr 24 Javascript
jquery实现手风琴效果
Nov 20 Javascript
jquery实现的判断倒计时是否结束代码
Feb 05 Javascript
JavaScript从0开始构思表情插件
Jul 26 Javascript
JS验证码实现代码
Sep 14 Javascript
vue中使用sessionStorage记住密码功能
Jul 24 Javascript
Layui实现主窗口和Iframe层参数传递
Nov 14 Javascript
webpack3.0升级4.0的方法步骤
Apr 02 Javascript
js 绑定带参数的事件以及手动触发事件
Apr 27 #Javascript
javascript 模式设计之工厂模式学习心得
Apr 27 #Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
Apr 27 #Javascript
jQuery Lightbox 图片展示插件使用说明
Apr 25 #Javascript
jQuery 表格工具集
Apr 25 #Javascript
基于JQuery.timer插件实现一个计时器
Apr 25 #Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 #Javascript
You might like
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
php实现数组按指定KEY排序的方法
2015/03/30 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
js中switch case循环实例代码
2013/12/30 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
[31:01]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS Orenda
2014/05/23 DOTA
在Django框架中编写Context处理器的方法
2015/07/20 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python中return的返回和执行实例
2019/12/24 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
2014/09/15 HTML / CSS
留学推荐信写作指南
2014/01/25 职场文书
领导党性分析材料
2014/02/15 职场文书
继承公证书样本
2014/04/04 职场文书
交通文明倡议书
2014/05/16 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
2015中学学校工作总结
2015/07/20 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电