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 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
Jun 02 Javascript
extjs fckeditor集成代码
May 10 Javascript
javascript iframe编程相关代码
Dec 28 Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 Javascript
php与js的区别是什么
Aug 05 Javascript
JavaScript检测实例属性, 原型属性
Feb 04 Javascript
引用jquery框架后出错的解决方法
Aug 09 Javascript
jQuery基本选择器之标签名选择器
Sep 03 Javascript
简单谈谈Javascript函数中的arguments
Feb 09 Javascript
jquery实现的table排序功能示例
Mar 10 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
微信小程序实现tab页面切换功能
Jul 13 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
一个基于PDO的数据库操作类(新) 一个PDO事务实例
2011/07/03 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
smarty内置函数section的用法
2015/01/22 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
PHP反射实际应用示例
2019/04/03 PHP
PHP字符串中抽取子串操作实例分析
2019/06/22 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
node.js中的fs.symlinkSync方法使用说明
2014/12/15 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
javascript的BOM
2016/05/03 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
Bootstrap的class样式小结
2016/12/01 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
Python编程flask使用页面模版的方法
2018/12/28 Python
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
python super函数使用方法详解
2020/02/14 Python
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
Orlebar Brown官网:设计师泳裤和泳装
2020/12/08 全球购物
大学毕业感言50字
2014/02/07 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
回复函范文
2015/07/14 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript
Python合并pdf文件的工具
2021/07/01 Python
Python内置的数据类型及使用方法
2022/04/13 Python