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

DOM--5 动态修改样式和层叠样式表相关推荐

  1. 微信会员卡html修改样式模板,微信小程序 JS动态修改样式的实现代码

    微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...

  2. 微信小程序动态修改样式

    前言 微信小程序动态修改样式:循环数组显示到页面,点击单独的按钮变换单独样式 一.wxml <view class="fb_tips"wx:for="{{arr11 ...

  3. uniapp动态修改样式_uniapp样式动态绑定

    场景一:用户点击按钮后动态切换按钮选中样式(如图) 已上线 未开始 //选择状态 selectState(e){ this.whichSelected=e.currentTarget.dataset. ...

  4. uniapp动态修改样式_掌握Photoshop图层样式技术

    凹凸贴图效果 "等等,什么?" 您会惊叹:""图层样式"菜单中没有凹凸贴图效果!" 的确如此,但是通过将"图案覆盖"和& ...

  5. vue获取dom元素与修改样式详解

    vue中如何获取dom元素呢? 步骤详解 在标签上加上ref属性 如 : 在js中通过 this.$refs.加ref的值便可以获取dom 如:this.$refs.refDemo 修改对应的样式名 ...

  6. 根据条件动态修改element 组件深层次样式

    开发前提: vue elementUI 在开发中有时候 element 中我们使用的某个组件的样式不符合我们的需求,直接写行内样式,有时候会发现并不会生效,直接将样式写在 style 标签中虽然样式会 ...

  7. 动态修改el-input样式;动态修改elmentUI元素样式;css变量

    场景:正常我们动态修改div元素的样式,使用:style和:class即可:但是我们想要动态修改element的组件样式时候,例如el-input字体颜色,由于el-input的样式嵌套很深,我们需要 ...

  8. 前端入门篇(四十一)JS基础8动态修改网页内容(DOM操作)

    基本概念: 1.DOM操作:JS动态修改网页内容 2.DOM树: 将html文件转换为机器能看得懂的数据结构: 包含document文档节点.标签节点.text文本节点.comment注释节点等: d ...

  9. javascript 动态修改css样式

    方法一:改变外联css文件,这里不讲这个. 方法二:通过改变claaName来改变样式,语法: obj.className = "style2";//或者 obj.setAttri ...

最新文章

  1. 调查发现 Java 和 JavaScript 是企业开发的顶级语言
  2. 专访阿里资深研发工程师窦贤明:PG与商业数据库差距并不明显
  3. MyCat数据库分片
  4. 几个 ASP.NET 小技巧
  5. Linq 实现 DataTable 行转列
  6. C语言学习:snprintf()函数
  7. 如果唐代诗人有微博,简直就是真实版「梦回大唐」
  8. 数据结构:从插入排序到希尔排序
  9. 拒绝996,选对框架很关键!看这里。。。。。。
  10. django 轮播图上传_拼多多规则更新:关于【商品轮播图】你所不知道的秘密!...
  11. java编写a b直接的偶数之和_java中如何 输入一个大于 6 的偶数n,如何把这个偶数拆分为a和b,并满足n=a+b。...
  12. linux系统的nginx使用及本地访问
  13. Java中 Tomcat 是干什么的?
  14. 成本要素****没有被分配到成本组件结构01中的成本组件
  15. 我的Unity工具类---对象池
  16. Angular CLI简介
  17. 马王堆汉墓帛书‧老子——乙本释文(德经)
  18. 获取SD卡序列号和厂商ID
  19. java小程序体重监测,分享个可以记录体重的小程序,坚持才能瘦
  20. 【kimol君的无聊小发明】—用python写视频下载器

热门文章

  1. 网页设计趋势:模糊背景在网站中的经典应用案例
  2. 【jquery模仿net控件】初步GridView模型实现,及其简单应用
  3. 2011年的MVP礼包
  4. 体验VSTS源代码管理之一
  5. 持续集成之Jenkins安装部署
  6. Spring AOP两种实现机制是什么?
  7. 在使用win 7 无线承载网络时,启动该服务时,有时会提示:组或资源的状态不是执行请求操作的正确状态。 网上有文章指出,解决这个问题的方法是在设备管理器中启动“Microsoft托管网络虚拟适配
  8. 05 切片、迭代、列表生成
  9. python设计模式(七):组合模式
  10. redis终端简单命令