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 新节点的创建 删除 的步骤
Jul 04 Javascript
JQuery循环滚动图片代码
Dec 08 Javascript
javascript中input中readonly和disabled区别介绍
Oct 23 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
Aug 27 Javascript
JavaScript学习笔记之取数组中最大值和最小值
Mar 23 Javascript
javaScript中的原型解析【推荐】
May 05 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
很酷的星级评分系统原生JS实现
Aug 25 Javascript
jQuery实现用户输入自动完成功能
Feb 13 Javascript
详解刷新页面vuex数据不消失和不跳转页面的解决
Jan 30 Javascript
javascript的this关键字详解
May 20 Javascript
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
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
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
2017/06/01 Javascript
vue深入解析之render function code详解
2017/07/18 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
详解如何在微信小程序中愉快地使用sass
2018/07/30 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
async/await优雅的错误处理方法总结
2019/01/30 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python检测是文件还是目录的方法
2015/07/03 Python
Python中偏函数用法示例
2018/06/07 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
Python Lambda函数使用总结详解
2019/12/11 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
python中id函数运行方式
2020/07/03 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
运动会开幕式主持词
2015/07/01 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL