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 相关文章推荐
免费空间广告万能消除代码
Sep 04 Javascript
JavaScript Prototype对象
Jan 07 Javascript
TreeView 用法(有代码)(asp.net)
Jul 15 Javascript
jquery实现的一个导航滚动效果具体代码
May 27 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
Jan 07 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
解决在vue项目中webpack打包后字体不生效的问题
Sep 01 Javascript
微信小程序CSS3动画下拉菜单效果
Nov 04 Javascript
JavaScript实现联动菜单特效
Jan 07 Javascript
JS实现放大镜效果
Sep 21 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 获取远程网页内容的函数
2009/09/08 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
php实例分享之html转为rtf格式
2014/06/02 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
PHP Cookie学习笔记
2016/08/23 PHP
CI框架附属类用法分析
2018/12/26 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
JS 动态加载脚本的4种方法
2009/05/05 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
Google Maps API地图应用示例分享
2014/10/23 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
用python与文件进行交互的方法
2018/03/01 Python
Python 编程速成(推荐)
2019/04/15 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python或C++读取指定文件夹下的所有图片
2019/08/31 Python
python KNN算法实现鸢尾花数据集分类
2019/10/24 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
Django多层嵌套ManyToMany字段ORM操作详解
2020/05/19 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
python能自学吗
2020/06/18 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
解释DataSet(ds) 和 ds as DataSet 的含义
2014/07/27 面试题
制药工程专业毕业生推荐信
2013/12/24 职场文书
读书之星事迹材料
2014/05/12 职场文书