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与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
Mar 12 Javascript
Javascript 学习笔记 错误处理
Jul 30 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
Oct 20 Javascript
使用Java实现简单的server/client回显功能的方法介绍
May 03 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
jquery 判断div show的状态实例
Dec 03 Javascript
性能优化之代码优化页面加载速度
Mar 01 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
bootstrap table实现iview固定列的效果实例代码详解
Sep 30 Javascript
el-form 多层级表单的实现示例
Sep 10 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生成静态页面详解
2006/12/05 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
javascript实现TreeView 无刷新展开的实例代码
2013/07/13 Javascript
js实现的点击div区域外隐藏div区域
2014/06/30 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
基于Vue过渡状态实例讲解
2017/09/14 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
vue中解决微信html5原生ios虚拟键返回不刷新问题
2020/10/20 Javascript
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
python代码编写计算器小程序
2020/03/30 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python进行参数传递的方法
2020/05/12 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
课堂教学改革实施方案
2014/03/17 职场文书
小学家长评语大全
2014/04/16 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js