再谈动态添加样式规则

2016-02-20 00:13 9 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享再谈动态添加样式规则,希望可以对大家能有小小的帮助。

【 tulaoshi.com - Web开发 】

以前我就是一篇博文 就给出一个好用的函数,它在我几篇博文中被广泛运用的。最近看了不少东西,于是便有了这篇博文,以梳理我学到的新东西。

毫无疑问,基于表现与结构相分离的原则,直接导入一个新的样式表是最好的选择,但有些情况就行不通,如我们做一个能拖动的DIV,从设置样式的角度看,就是把它绝对定位,以防影响原来的文档流,然后一点点改变其top与left的值实现移动的效果。由于拖动是有时间概念的,一秒24帧,样式表不可能面面俱到都把它们写进去。因此动态生成样式规则与快速修改样式规则是非常有必要的,W3C为此做了大量的工作,在DOM2.0中,扩充了不少接口。

退一步说,表现与结构相分离也不止导入样式表这一条路。要知道,一共有三种样式类型,外部样式,内部样式,与内联样式。

外部样式,就是我们上面说的那个,写在一个独立的CSS文件中。 内部样式,就是独立写在一个style标签中,通常是放在head标签中,我最后提供的函数生成的样式就是内部样式。 内联样式,就是写在元素的style属性中的样式。

新添加的接口主要集中在外部样式中之所以说接口,因为相应的实现是由浏览器方提供的,像IE6那样傲慢的家伙,从来无视它们的存在。

在W3C的模型中,type为"text/css"的link标签与style标签都是代表一个CSSStyleSheet对象,我们可以通过document.styleSheets 获得当前页面中所有的CSSStyleSheet对象,不过这是一个集合,非单纯的数组。每一个CSSStyleSheet对象拥有如下属性,

type:永远返回text/css字符串。 disabled:和input的disabled的作用相同,默认是false。 href:返回URL,如果是style标签为null。 title:返回其title的值,title与普通元素的title无异,随你写什么。 media:IE与火狐返回的东西并不一致,不太好说。media是用来规定它拥有的样式规则对什么设备有效,默认是所有。 ownerRule:返回一个只读的CSSRule对象,如果样式表是用@import引入的话。 cssRules: 返回一个只读的样式规则对象(CSSStyleRule object)的集合。

样式规则对象(CSSStyleRule object),是W3C为了对样式进行更细致的设定而搞出来的,如下面这个东西就是对应一个样式规则对象:

button[type] {  
    padding:4px 10px 4px 7px;     
    line-height:17px;           
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

样式规则对象拥有如下几个主要属性:type,cssText,parentStyleSheet,parentRule。

type有点类似节点的nodeType,对样式规则进行细分,它是用一个整数来表示其类型。具体情况如下

0: CSSRule.UNKNOWN_RULE 1: CSSRule.STYLE_RULE (定义一个CSSStyleRule对象) 2: CSSRule.CHARSET_RULE (定义一个CSSCharsetRule对象,用于设定当前样式表的字符集,默认与当前网页相同) 3: CSSRule.IMPORT_RULE (定义一个CSSImportRule对象,就是用@import引入其他的样式表) 4: CSSRule.MEDIA_RULE (定义一个CSSMediaRule对象,用于设定此样式是用于显示器,打印机还是投影机等等) 5: CSSRule.FONT_FACE_RULE (定义一个CSSFontFaceRule对象,CSS3的@font-face) 6: CSSRule.PAGE_RULE (定义一个CSSPageRule对象)

cssText不用多说,一个非常有用的属性,直接把字符串转换成样式规则,无视各浏览器样式属性的差异,如cssFloat 和styleFloat。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

parentStyleSheet和parentRule都是针对@import来说的。不过,@import在IE下有问题,我基本不用它。

来源:http://www.tulaoshi.com/n/20160220/1631480.html

延伸阅读
微信怎么添加动态表情   除了自带的经典表情外,微信也支持动态表情,让你的聊天更有趣表达更直接方便,如果你还没有动态表情,要怎么添加呢? 1.进入微信,打开某位好友的聊天,点击 2.点击右下角的 3.选择自己喜欢的表情进入 4.若表情名后标注则为动态表情,点击 5.下载完成后即可给好友发动态...
标签: PS教程 PS基础
在本文中我们将了解Photoshop图层样式的添加,教程详细讲解了图层样式的添加方法,对PS初学者了解PS的图层样式有很大帮助。 层样式是Photoshop中制作图片效果的重要手段之一,层样式可以运用于一幅图片中除背景层以外的任意一个层。如果要对背景层使用层样式,你可以在背景层上双击鼠标并为其另外命名命名。如果要对背景...
如何用代码动态添加控件 作者:bzshow 读者层次: VC初学者 在资源编辑器里我们可以方便地在对话框中加入所需控件,比如文本编辑框、列表控件等。但假如我们需要在运行期间动态生成这些控件该怎么做呢?本文就是讲述用代码动态添加控件的方法,并提供示例工程。 下载示例工程 12.5K ...
标签: PS PS教程
在学习中遇到问题可以到 论坛PS求助研讨 发贴交流!     本系列教程由中国互助课堂专为PS新手制作,更多教程和练习请 点击这里 ,在这里有系列的教程、练习,并有老师对练习进行点评与指导,欢迎朋友们的光临!     本例为PS系列基础教程,在本文中我们将了解Photoshop图层样式中的投影,教程详细讲解了投影...
标签: Web开发
命名一直是个让我头痛的问题,特别是那些看上去差不多的模块,所以就得想办法啦,我总结了下面的方法,虽然还在试验中。希望对大家有帮助。欢迎大家提出改进的意见。具体如下: 要注意的内容: 一,命名所选用的单词应选择不过于具体表示某一状态(如颜色、字号大小等)的单词,以避免当状态改变时名称失去意义。 二,样式类名由以字母开头...

经验教程

236

收藏

69
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部