DOM--5 动态修改样式和层叠样式表

W3C DOM2 样式规范

CSSStyleSheet对象

表示所有css样式表,包括外部link和嵌入style的;通过document.styleSheets属性可以获得文档中CSSStyleSheet对象的列表;其中每个CSSStyleSheet都具有以下属性:

  • type: 值始终是text/css;
  • disabled: 布尔值,表示相应的样式表是否应用与当前文档(false)还是被禁用(true);
  • href: 样式表路径,嵌入的则是null;
  • media: 表示样式表应用的目标设备, 中的media属性
  • cssRules: 是一个只读的CSSRuleList列表对象,包含样式表中所有的CSSRule对象;
  • insertRule(rule, index): 添加新的样式声明;index表示列表对象cssRules的值;
  • deleteRule(index), 用于样式表中移除规则;

CSSStyleRule对象

每个CSSStyleSheet对象内部包含着一组CSSStyleRule对象 document.styleSheets[0].cssRule, 每个对象 document.styleSheets[0].cssRule[0]有如下属性:

  • type, 继承自CSSRule对象的一个属性,对CSSStyleRule类型而言是1;
  • cssText: 包含以只付出形式表示的当前状态下的全部规则;如果这些规则被其他DOM方法改变了,那么这个字符串也会相应改变;
  • parentStyleSheet: 引用父CSSStyleSheet对象;
  • parentRule: 如果规则位于另一个规则中,该属性则引用另一个CSSRule对象;
  • selectorText: 包含规则的选择符;

CSSStyleDeclaration对象

这是用的最多的对象,表示一个元素的style属性(内嵌在元素中的值) A.$('a').style

  • cssText:包含以字符串形式表示的全部规则;
  • parentRule: 讲引用CSSStyleRule对象;
  • getPropertyValue(propertyName), 返回一个字符串形式的CSS样式属性值;
  • removeProperty(propertyName), 从声明中移除特定的属性;
  • setProperty(propertyName, value, priotity), 用于设置特定css属性的值;

把样式置于DOM脚本之外

style属性

注意通过此属性只能访问到在元素的style属性中以嵌入方式声明的css属性,无法访问层叠样式表或从父类继承的属性

  • element.style.setProperty('background-color','red'); //在ie8及以下无效
  • element.style.backgroundColor = 'red';//都有效

style引用的是HTMLElement对象的style属性,本身是CSSStyleDeclaration对象;一般使用第一种并兼容第二种

基于className切换样式

  • element.setAttribute('class','newClassName'); //在ie8及以下无效
  • element.className = 'newClassName'; //都有效

className引用的是HTMLElement对象的class属性,兼容性考虑一般用第二种方法

切换样式表

  • 使用备用的样式表

常用属性

* type
* href
* media
* rel, 表示样式表于文档之间的关系* 设置'stylesheet' 指定一个样式表立即应用到文档* 设置'alternate stylesheet' 将其作为备用样式表;浏览器载入该样式表时会将其disbaled设置为true;
* disabled, 表示样式表是否起作用
* title, 标题,也在脚本中用到;

通过js操作disabled值改变样式

  • 切换body元素的className

先用设置公用样式,然后分别设置body.a;body.b等及下面的元素样式;最后通过改变body的classname来改变样式

  • 动态载入和移除样式表

直接通过js删减样式表

修改css规则

  • document.styleSheets能获得所有内嵌和外链的样式表,可以通过href判断

访问计算样式

DOM2样式规范在document.defaultView中包含了一个getComputedStyle()方法;返回一个只读的CSSStyleDeclaration对象

var elemet = A.$('example');
var styles = document.defaultVIew.getComputedStyle(element);
var color = styles.getProperty('background-color');

简单的渐变效果

function fadeColor(from ,to ,callback , duration, framesPerSecond) {function doTimeout(color, frame) {setTimeout(function() {try{callback(color);} catch(e) {A.log.write(e);}}, (duration * 1000 / framesPerSecond) * frame );}var duration = duration || 1;var framesPerSecond = framesPerSecond || duration * 15;var r, g ,b;var frame = 1;doTimeout('rgb(' + from.r + ',' + from.g + ',' + from.b + ')', 0);while(frame < framesPerSecond + 1) {r = Math.ceil(from.r * ((framesPerSecond - frame) / framesPerSecond) + to.r * (frame / framesPerSecond));g = Math.ceil(from.g * (framesPerSecond - frame) / framesPerSecond + to.g * (frame / framesPerSecond));b = Math.ceil(from.b * ((framesPerSecond - frame) / framesPerSecond) + to.b * (frame / framesPerSecond));doTimeout('rgb(' + r + ',' + g + ',' + b + ')', frame);frame++;}}
fadeColor({r:0, g:255, b:0}/*开始颜色*/, {r: 255, g:255, b:255}/*结束颜色*/, function(color) {A.setStyleById('style', {'background-color': color})
});

转载于:https://www.cnblogs.com/jinkspeng/p/4270544.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VC++ 深入详解 学习笔记(5) -- 修改窗口样式续

From: http://elton.iteye.com/blog/301503 之前说过&#xff0c; 修改窗口大小&#xff0c;窗口样式的方法。 这里说明一下修改窗口的图标&#xff0c;光标和背景的方法。 修改窗口大小&#xff0c;样式是在创建窗口的时候进行的&#xff0c;而修改图标&#xff0c;光标和背…

×××常见问题原因与解决

服务器什么地方可能出现故障当客户端与某个ISP建立连接时&#xff08;这种连接使用连接中的点对点协议--PPP--部分&#xff09;&#xff0c;ISP将为客户端分配一个IP地址、一个DNS服务器地址以及一个缺省网关。当客户端发起一个PPTP连接时&#xff0c;这项操作将创建第二个TCP/…

报错解析 [Vue warn]: You may have an infinite update loop in a component render function.

报错解析 [Vue warn]: You may have an infinite update loop in a component render function.

关于yield的一些资料

yield是一个语句不对应IL指定,编译后可以看到yield会变成一个IEnumerator(IEnumerable)实现. 参考: http://www.cnblogs.com/montaque/archive/2005/04/21/142844.html http://www.microsoft.com/china/msdn/library/langtool/vcsharp/CreElegCodAnymMeth.mspx?mfrtrue http:/…

改变窗口的外观和大小

From: http://blog.csdn.net/yoyobaibai/article/details/6044101 改变窗口的外观和大小需要在窗口创建以前改变。 所以我们可以在CMainFrame的 PreCreateWindow中改变CREATESTRUCT 结构体的值就行了。 E.G. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) 改变窗口…

python评估不平衡数据集_Python Pandas:平衡不平衡的数据集(用于面板分析)

I know this might be easy to do. I can do it in Stata but Im trying to move to Python.I have a big dataset that its unbalance. It looks like this:And I need to get a dataset as follows:Any guidance its welcome. Thanks a lot!解决方案one way is to set year a…

Pixysoft.Framework.MemoryCache 开发实录

由于顾客的系统进场链接不稳定&#xff0c;导致很多业务无法操作&#xff0c;必须使用一个缓存算法。但是原先的思路&#xff0c;是豆瓣的分布式缓存算法&#xff0c;打算写的很大。但是实在显示需要&#xff0c;只能花2个阶段去写。第一阶段&#xff0c;实现本地的缓存&#x…

spring里的controller之间的跳转

未测试&#xff1a; this.getServletContext().getRequestDispatcher("/rentHouse.htm?methoddisplay").forward(request,response); return null;转载于:https://www.cnblogs.com/elhz/p/4274481.html

为CEDIT添加有颜色的边框

From: http://hi.baidu.com/dqf8/blog/item/56258ed62c658b2707088bb5.html 1、从CEDIT派生CMyEdit 2、添加代码&#xff1a; void CMyEdit::OnPaint() { CPaintDC dc(this); CPaintDC dc(this); // device context for painting // TODO: Add yo…

向后台接口传递FormData格式的数组对象

向后台接口传递FormData格式的数组对象 前端利用formData格式进行数据上传&#xff0c;前端formData 传值 和 json传值的区别&#xff1f;

学会使用ant design封装一个锚点组件

我是歌谣 放弃很容易 但是坚持一定很酷 封装一个锚点组件就是要知道一个父子组件的一个传值 很显然 父亲这边传过去一个数组 然后就可以进行循环遍历得到一个新的数值 这边注意 当我们进行一个map返回值得时候一定需要一个 &#xff08;&#xff09;或者return就可以实现了 这是…

java 在数组末尾添加元素_Java快问快答:用 ArrayList 还是 LinkedList?

问题&#xff1a;通常我会这么定义列表&#xff1a;List<String> names new ArrayList<>()names类型使用List接口&#xff0c;那么具体实现该如何选择。 什么时候应该用LinkedList替代ArrayList&#xff0c;反之亦然&#xff1f;这里大家可以关注一下我的个人专栏…

如何利用WGET覆写已存在的档案

如果你有用wget下載檔案&#xff0c;而且檔名都是一樣的話&#xff0c;如設定排程每天自動下載antivir的病毒碼&#xff0c;那麼你會發現&#xff0c;wget不會覆寫原本已經存在的檔案。而在他的說明文件中&#xff0c;似乎也沒有辦法在下載前先刪除已存在的檔案&#xff0c;只有…

vs2010的sdf文件和ipch文件夹

From: http://hi.baidu.com/vcdashi/blog/item/f25a3511afbf136bcb80c40e.html vs2010打开某个工程 &#xff0c;转换成功之后&#xff0c;在工程目录看见一个sdf文件和一个ipch文件夹&#xff0c;都超大&#xff08;起码几十M&#xff09;&#xff0c;我一个四百多k 的工程&a…

vue音视频播放器 vue-hls-player

vue音视频播放器 vue-hls-player

Taro+react开发(68):页面数据太长不走url走localstorage

componentDidShow() {let arr localStorage.getItem("answerList");console.log(JSON.parse(arr), "answerList");}

湖南(包括岳阳)的交通规划

网上找到的&#xff0c;关心家乡建设的可以看看。转载于:https://blog.51cto.com/fredlin/275734

beetl 页面标签_Beetl 2.9.0 发布,修改 HTML 标签的渲染机制

本次发布主要修改了 HTML 标签的渲染机制&#xff0c;HTMLTagSupportWrapper2 采用延迟渲染在2.9.0版本&#xff0c;HTML 标签内部渲染是使用tagBody变量&#xff0c;渲染的时候会调用此变量的toString方法完成按需渲染功能。理论上如果没有对beetl引擎的HTML 标签内部实现做任…