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 相关文章推荐
总结一些js自定义的函数
Aug 05 Javascript
Javascript调用C#代码
Jan 17 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
网站接入QQ登录的两种方法
Jul 22 Javascript
深入浅析JavaScript面向对象和原型函数
Feb 06 Javascript
JavaScript导航脚本判断当前导航
Jul 12 Javascript
微信小程序 Toast自定义实例详解
Jan 20 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
Aug 27 Javascript
简单了解JavaScript中常见的反模式
Jun 21 Javascript
layui表单验证select下拉框实现验证的方法
Sep 05 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
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
第十节--抽象方法和抽象类
2006/11/16 PHP
php简单静态页生成过程
2008/03/27 PHP
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
JS实现简单的Canvas画图实例
2013/07/04 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
Nodejs实现的一个简单udp广播服务器、客户端
2014/09/25 NodeJs
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
使用jquery datatable和bootsrap创建表格实例代码
2017/03/17 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python异常处理总结
2014/08/15 Python
Python lambda和Python def区别分析
2014/11/30 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
python 判断矩阵中每行非零个数的方法
2019/01/26 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
Funko官方商店:源自美国,畅销全球搪胶收藏玩偶
2018/09/15 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
投标服务承诺书
2014/05/28 职场文书
总经理助理岗位职责范本
2014/07/20 职场文书
团组织推优材料
2014/12/29 职场文书
大学生团员个人总结
2015/02/14 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js