自己的样式

2008年6月12日,10:49上午由卢克·斯密| 开发 | 8评论

在用户交互修改DOM元素的风格,是DHTML的接口,在平稳过渡的州,(希望)直观的方式创建的支柱之一。 在DOM中的每个HTML元素包含style ,相应的CSS属性的浏览器所理解的属性的集合。 对于启用JavaScript和CSS的浏览器,将包含以下两段红色文字:

 < - 第1款 - >
 <p style="c​​olor: #f00">本款是红色的</ P>

 < - 第2款 - >
 <p id="x">本款的颜色将是红色的,之后的JavaScript运行</ P>
 <script type="text/javascript">
 (函数(){
     VAR EL =('X');

     el.style.color ='#F00;

 })();
 </ SCRIPT>

即使CSS属性是不适用的一个给定的元素,将代表该元素的style集合。 例如,甚至<br>元素将有el.style.letterSpacing财产。

已更改名称,以保护无辜

在JavaScript中的样式属性的名称是骆驼套管的CSS版本,所以在CSS中的font-family成为el.style.fontFamily在样式集合。 “浮”在JavaScript中的保留字,所以CSS的float属性被赋予了不同的名称。 在Internet Explorer中, styleFloat ,火狐,Safari和Opera都的使用cssFloat (Opera还支持styleFloat ,实际上)。 此外,每个浏览器都有一个专有的CSS属性的主机,也表明在风格上集合了(EG -moz-border-radius ,成为el.style.MozBorderRadius在Firefox)。 比的其他styleFloat / cssFloat ,浏览器厂商在很大程度上同意在非专有的属性名称。

疯狂和方法

我设置了文件,属性,目前在每个A级浏览器的style集合(使他们的特定值的功能支持任何索赔)。

对于每一个浏览器,我用一个简单的for (var prop in el.style)方法来遍历风格的集合,如果可用的开发工具和交叉检查。 具体来说,我用下面的:

浏览器 方法
Internet Explorer 6中 for ( in )和Visual Web Developer 2008 Express版
Internet Explorer 7中 for ( in )和Visual Web Developer 2008 Express版
火狐2.0.0.14 for ( in )和Firebug 1.1
火狐3(候选发布版2) for ( in )和Firebug 1.1
Safari浏览器3.1.1(WebKit版本4525.18) DOM的督察*
歌剧9.27 for ( in )
歌剧9.5(beta和GA) for ( in )和Opera蜻蜓

* - Safari浏览器不枚举未分配的样式属性,所以for ( in )不显示任何有用的。

所有测试都做了一台Macbook运行OSX 10.4临。 非法入境者和FF2的Parallels上运行Windows XP的实例进行了测试。 我只记录供应商标识符(如万盎司),未使用前缀属性,和省略的方法和荟萃领域,如setPropertylength 唯一的例外,这是cssText ,我将讨论更多关于购买。 所以事不宜迟...

在A级(加几)浏览器的样式属性

黄金背景的属性是目前在所有测试的浏览器。

财产 IE6的 IE7中 FF2的 FF3的 S3的 op9.27 op9.5
加速器 Ÿ Ÿ ñ ñ ñ ñ ñ
alignmentBaseline ñ ñ ñ ñ Ÿ ñ Ÿ
方位角 ñ ñ Ÿ Ÿ ñ ñ ñ
背景 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
附件 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
颜色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
图像 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
位置 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
X Ÿ Ÿ ñ ñ ñ ñ ñ
Ÿ Ÿ Ÿ ñ ñ ñ ñ ñ
重复 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
baselineShift ñ ñ ñ ñ Ÿ ñ Ÿ
行为 Ÿ Ÿ ñ ñ ñ ñ ñ
边境 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
上,右,下,左 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
颜色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
风格 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
宽度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
颜色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
风格 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
宽度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
崩溃 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
间距 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
底部 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
boxSizing ñ ñ ñ ñ ñ ñ Ÿ
captionSide ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
清除 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
路径 ñ ñ ñ ñ Ÿ ñ Ÿ
排除 ñ ñ ñ ñ Ÿ ñ Ÿ
颜色 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
插值 ñ ñ ñ ñ Ÿ ñ Ÿ
过滤器 ñ ñ ñ ñ Ÿ ñ Ÿ
轮廓 ñ ñ ñ ñ ñ ñ Ÿ
渲染 ñ ñ ñ ñ Ÿ ñ Ÿ
的ColumnSpan ñ ñ ñ ñ ñ ñ Ÿ
内容 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
counterIncrement ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
counterReset ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
cssFloat ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
cssText *** Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
球杆 ñ ñ Ÿ Ÿ ñ ñ ñ
ñ ñ Ÿ Ÿ ñ ñ ñ
ñ ñ Ÿ Ÿ ñ ñ ñ
光标 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
方向 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
显示 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
displayAlign ñ ñ ñ ñ ñ ñ Ÿ
dominantBaseline ñ ñ ñ ñ ñ ñ Ÿ
海拔 ñ ñ Ÿ Ÿ ñ ñ ñ
emptyCells ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
enableBackground ñ ñ ñ ñ ñ ñ Ÿ
ñ ñ ñ ñ Ÿ ñ Ÿ
不透明 ñ ñ ñ ñ Ÿ ñ Ÿ
排除 ñ ñ ñ ñ Ÿ ñ Ÿ
过滤 Ÿ Ÿ ñ ñ Ÿ ñ Ÿ
floodColor ñ ñ ñ ñ Ÿ ñ Ÿ
floodOpacity ñ ñ ñ ñ Ÿ ñ Ÿ
字体 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
家庭 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
大小 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
调整 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
伸展 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
风格 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
变种 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
重量 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
glyphOrientationHorizo​​ntal ñ ñ ñ ñ ñ ñ Ÿ
glyphOrientationVertical ñ ñ ñ ñ ñ ñ Ÿ
高度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
imageRendering ñ ñ ñ ñ ñ ñ Ÿ
的IMEMode Ÿ Ÿ ñ Ÿ ñ ñ ñ
字距 ñ ñ ñ ñ ñ ñ Ÿ
layoutFlow Ÿ Ÿ ñ ñ ñ ñ ñ
layoutGrid Ÿ Ÿ ñ ñ ñ ñ ñ
夏亚 Ÿ Ÿ ñ ñ ñ ñ ñ
线 Ÿ Ÿ ñ ñ ñ ñ ñ
模式 Ÿ Ÿ ñ ñ ñ ñ ñ
类型 Ÿ Ÿ ñ ñ ñ ñ ñ
离开 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
的letterSpacing Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
lightingColor ñ ñ ñ ñ Ÿ ñ Ÿ
换行符 Ÿ Ÿ ñ ñ ñ ñ ñ
lineHeight Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
lineIncrement ñ ñ ñ ñ ñ ñ Ÿ
listStyle Ÿ Ÿ Ÿ Ÿ ñ Ÿ Ÿ
图像 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
位置 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
类型 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
余量 Ÿ Ÿ Ÿ Ÿ ñ Ÿ Ÿ
上,右,下,左 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
markerEnd ñ ñ ñ ñ Ÿ ñ Ÿ
markerMid ñ ñ ñ ñ Ÿ ñ Ÿ
markerOffset ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
markerStart ñ ñ ñ ñ Ÿ ñ Ÿ
商标 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
面膜 ñ ñ ñ ñ Ÿ ñ Ÿ
maxHeight ñ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
maxWidth ñ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
minHeight Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
minWidth ñ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
navDown ñ ñ ñ ñ ñ ñ Ÿ
navIndex ñ ñ ñ ñ ñ ñ Ÿ
navLeft ñ ñ ñ ñ ñ ñ Ÿ
navRight ñ ñ ñ ñ ñ ñ Ÿ
navUp ñ ñ ñ ñ ñ ñ Ÿ
不透明 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
孤儿 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
概述 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
颜色 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
抵消 ñ ñ Ÿ Ÿ ñ ñ Ÿ
风格 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
宽度 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
溢出 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
X Ÿ Ÿ Ÿ Ÿ Ÿ ñ Ÿ
Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ ñ Ÿ
填充 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
上,右,下,左 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
BreakAfter Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
BreakBefore Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
BreakInside ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
暂停 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
音高 ñ ñ Ÿ Ÿ ñ ñ ñ
范围 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
pointerEvents ñ ñ ñ ñ Ÿ ñ Ÿ
位置 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
报价 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
调整 ñ ñ ñ ñ Ÿ ñ ñ
丰富 ñ ñ Ÿ Ÿ ñ ñ ñ
权利 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
ROWSPAN ñ ñ ñ ñ ñ ñ Ÿ
rubyAlign Ÿ Ÿ ñ ñ ñ ñ ñ
rubyOverhang Ÿ Ÿ ñ ñ ñ ñ ñ
rubyPosition Ÿ Ÿ ñ ñ ñ ñ ñ
scrollbar3dlightColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarArrowColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarBaseColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarDarkShadowColor Ÿ Ÿ ñ ñ ñ ñ ñ
scrollbarDarkshadowColor ñ ñ ñ ñ ñ ñ Ÿ
scrollbarFaceColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarHighlightColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarShadowColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
scrollbarTrackColor Ÿ Ÿ ñ ñ ñ ñ Ÿ
shapeRendering ñ ñ ñ ñ Ÿ ñ Ÿ
大小 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
solidColor ñ ñ ñ ñ ñ ñ Ÿ
solidOpacity ñ ñ ñ ñ ñ ñ Ÿ
发言 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
ñ ñ Ÿ Ÿ ñ ñ ñ
数字 ñ ñ Ÿ Ÿ ñ ñ ñ
标点 ñ ñ Ÿ Ÿ ñ ñ ñ
speechRate ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
stopColor ñ ñ ñ ñ Ÿ ñ Ÿ
stopOpacity ñ ñ ñ ñ Ÿ ñ Ÿ
应力 ñ ñ Ÿ Ÿ ñ ñ ñ
行程 ñ ñ ñ ñ Ÿ ñ Ÿ
dasharray ñ ñ ñ ñ Ÿ ñ Ÿ
dashoffset ñ ñ ñ ñ Ÿ ñ Ÿ
Linecap ñ ñ ñ ñ Ÿ ñ Ÿ
Linejoin ñ ñ ñ ñ Ÿ ñ Ÿ
miterLimit分别 ñ ñ ñ ñ Ÿ ñ Ÿ
不透明 ñ ñ ñ ñ Ÿ ñ Ÿ
宽度 ñ ñ ñ ñ Ÿ ñ Ÿ
styleFloat Ÿ Ÿ ñ ñ ñ Ÿ Ÿ
tableLayout Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
textAlign Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
最后 Ÿ Ÿ ñ ñ ñ ñ ñ
textAutospace Ÿ Ÿ ñ ñ ñ ñ ñ
textAnchor ñ ñ ñ ñ Ÿ ñ Ÿ
textDecoration Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
闪烁(布尔) Ÿ Ÿ ñ ñ ñ ñ ñ
删除线(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
无(BOOL) Ÿ Ÿ ñ ñ ñ ñ ñ
上划线(布尔) Ÿ Ÿ ñ ñ ñ ñ ñ
强调(布尔) Ÿ Ÿ ñ ñ ñ ñ ñ
textIndent Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
textJustify Ÿ Ÿ ñ ñ ñ ñ ñ
修剪 Ÿ Ÿ ñ ñ ñ ñ ñ
textKashida Ÿ Ÿ ñ ñ ñ ñ ñ
空间 Ÿ Ÿ ñ ñ ñ ñ ñ
textOverflow Ÿ Ÿ ñ ñ ñ ñ ñ
textRendering ñ ñ ñ ñ Ÿ ñ Ÿ
textShadow ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
textTransform Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
textUnderlinePosition Ÿ Ÿ ñ ñ ñ ñ ñ
顶部 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
unicodeBidi Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
vectorEffect ñ ñ ñ ñ ñ ñ Ÿ
verticalAlign Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
viewportFill ñ ñ ñ ñ ñ ñ Ÿ
不透明 ñ ñ ñ ñ ñ ñ Ÿ
能见度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
voiceFamily ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
体积 ñ ñ Ÿ Ÿ ñ Ÿ Ÿ
空白符 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
寡妇 ñ ñ Ÿ Ÿ Ÿ Ÿ Ÿ
宽度 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
wordSpacing Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
wordWrap的 Ÿ Ÿ ñ ñ Ÿ ñ ñ
writingMode Ÿ Ÿ ñ ñ Ÿ ñ Ÿ
ZIndex的 Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ Ÿ
放大 Ÿ Ÿ ñ ñ ñ ñ ñ

关于注style.cssText

DOM level2行情规范定义的cssText属性

声明块(不包括周围的花括号)的可分析文本表示。 设置此属性将导致在新的价值分析和声明块中的所有属性,包括拆除或物业此外复位。

这意味着你可以设置一气呵成,通过设置样式属性el.style.cssText = myCSSTextString 此外,该字符串的格式是正确的正常的CSS语法,如你将在标签的样式属性分配( <p style="color: red; padding: 1em 2em; border-bottom: 2px solid #ccc">Hello world</p> 你甚至可以设置属性不止一次在相同的字符串,浏览器将调和的重复,因为它会解析样式表时。

cssText与使用的一些注意事项进行赋值,但是。

  • Opera将抛出一个错误,如果有任何畸形字符串的CSS。 (规格建议抛出一个错误,如果分配的值有语法错误,是unparsable将使值“unparsable的”的CSS有一个讨论,但所有其他的浏览器悄悄地忽略他们不明白的声明。)
  • Firefox 2中可以重用cssText的电流值(如用+ =追加)在转让时改变背景位置的y值。 这是固定在FF3。

可能有其他方面的考虑,我还没有发现。 在另一面,基准测试表明,分配是唯一通过单一属性cssText略慢比样式集合中设置相应的属性,并设置多个属性通过更快cssText 歌剧9.27是唯一的例外,它总是更快(在我的测试中,至少)直接设置的样式属性。

有乐趣让你的风格!

共享和扩展: 书签del.icio.us Digg它! | reddit!

8评论

  1. 我一直在使用这样的技术来检测CSS从JavaScript的支持,在罕见的情况。

    if (!YAHOO.lang.isUndefined(n.style.maxWidth))

    评论Griego克里斯 - 6月12日,2008

  2. 你不能在FF2的+ CSS的背景位置在JavaScript中的价值。
    当然,如果你在JavaScript中,你会得到它。

    和FF2的+负面“的z-index'价值'绝对','相对','固定'的元素,该元素不可见。

    双方应固定在FF3

    只是我的2美分

    问候
    darek

    Darek脊髓Adamkiewicz - 6月12日,2008

  3. 这是伟大的。 你会考虑这个图表重复的标题(浏览器)每30或50行或更新?

    5307853 - 6月12日,2008

  4. 非常有用的,谢谢。 任何想法是否改变cssText是比改变类的快?

    评论由马特·罗宾逊 - 6月13日,2008

  5. 考虑9.5歌剧院昨天公布,我不明白为什么你会用真的老了beta版本的浏览器。 目前的版本号是10063,而您测试的版本是建立数4808。

    评论由马吕斯-瑞摩斯伴侣- 6月13日,2008

  6. [...]通过点击看到完整的CSS属性表。 [...]

    由pingback的样式自己«outaTiME的 - 2008年6月13日,

  7. @马特

    我没有分配基准cssText与设置的className。 一般来说,直接设置元素的样式是唯一可取的,当你需要动态分配的值。 除了更好的做法,它是最有可能更快地更新的className,因为浏览器不需要额外的步骤做了解析的cssText和更新前重绘风格元素的集合中的属性。

    @马吕斯-瑞摩斯
    我可能会误读版本号。 因为我已经安装了9.5遗传算法和验证有没有风格的集合成员的修改。 顺便说一下,蜻蜓节目的音频级','休息',','和'前先休息,但休息后,他们显然不具有代表在为audioLevel(ETC)的风格集合。

    评论由卢克- 6月13日,2008

  8. 提示:一次更改多个元素的多个属性。

    multipleSpans = YAHOO.util.Dom.getElementsByClassName('多','跨');
    YAHOO.util.Dom.setStyle(multipleSpans,cssText“,”文本装饰:下划线;光标:指针;');

    评论本Swieringa - 6月23日,2008

很抱歉,评论已被封闭,在这个时候。

主办雅虎

©2006-2012雅虎公司所有权利保留。 隐私政策 - 服务条款

支持WordPress的关于雅虎 虚拟主机