JavaScript操作CSS样式的注意事项与跨浏览器兼容方案

作者:页面旅途

时间:2026-10-25

浏览:140

本文总结JavaScript操作CSS样式的核心注意事项,包括连字符属性转换为驼峰命名、float保留字处理(cssFloat/styleFloat),以及获取元素计算样式的跨浏览器兼容方案。通过对比W3C DOM与IE的currentStyle,提供统一的兼容性函数实现,并附带CSS属性与JS引用对照表,帮助开发者解决不同浏览器下的样式操作差异。

文章目录

在通过JavaScript修改单个元素的样式时,需注意style对象的语法与CSS语法基本一一对应。对于包含连字符的CSS属性,JavaScript中需转换为驼峰命名法(camel case)。例如,CSS中的font-size在JS中应写作fontSize,margin-top则对应marginTop。


处理float属性时,由于float是JavaScript的保留字,不能直接使用style.float。在标准浏览器中应使用style.cssFloat,而在IE浏览器中则需使用style.styleFloat。


获取元素的计算样式(computed style)时,不同浏览器采用不同的标准方法。


在符合W3C DOM标准的浏览器中,可通过document.defaultView.getComputedStyle()方法获取。


代码如下:

 
var heading = document.getElementById("heading");
var computedStyle = document.defaultView.getComputedStyle(heading,null);
var computedFontFamily = computedStyle.fontFamily;//sans-serif

IE浏览器不支持上述DOM标准方法,需采用currentStyle属性来获取。


代码如下:

 
var heading = document.getElementById("heading");
var computedFontFamily = heading.currentStyle.fontFamily;//sans-serif

综合上述两种方法,可以编写一个跨浏览器的函数来统一获取计算样式。


代码如下:

 
function retrieveComputedStyle(element,styleProperty){
var computedStyle = null;
if(typeof element.currentStyle != "undefined"){
computedStyle = element.currentStyle;
}else{
computedStyle = document.defaultView.getComputedStyle(element,null);
} 
return computedStyle[styleProperty];
} 

对照表


CSS Properties To JavaScript Reference Conversion

CSS Property JavaScript Reference
background background
background-attachment backgroundAttachment
background-color backgroundColor
background-image backgroundImage
background-position backgroundPosition
background-repeat backgroundRepeat
border border
border-bottom borderBottom
border-bottom-color borderBottomColor
border-bottom-style borderBottomStyle
border-bottom-width borderBottomWidth
border-color borderColor
border-left borderLeft
border-left-color borderLeftColor
border-left-style borderLeftStyle
border-left-width borderLeftWidth
border-right borderRight
border-right-color borderRightColor
border-right-style borderRightStyle
border-right-width borderRightWidth
border-style borderStyle
border-top borderTop
border-top-color borderTopColor
border-top-style borderTopStyle
border-top-width borderTopWidth
border-width borderWidth
clear clear
clip clip
color color
cursor cursor
display display
filter filter
font font
font-family fontFamily
font-size fontSize
font-variant fontVariant
font-weight fontWeight
height height
left left
letter-spacing letterSpacing
line-height lineHeight
list-style listStyle
list-style-image listStyleImage
list-style-position listStylePosition
list-style-type listStyleType
margin margin
margin-bottom marginBottom
margin-left marginLeft
margin-right marginRight
margin-top marginTop
overflow overflow
padding padding
padding-bottom paddingBottom
padding-left paddingLeft
padding-right paddingRight
padding-top paddingTop
page-break-after pageBreakAfter
page-break-before pageBreakBefore
position position
float styleFloat
text-align textAlign
text-decoration textDecoration
text-decoration: blink textDecorationBlink
text-decoration: line-through textDecorationLineThrough
text-decoration: none textDecorationNone
text-decoration: overline textDecorationOverline
text-decoration: underline textDecorationUnderline
text-indent textIndent
text-transform textTransform
top top
vertical-align verticalAlign
visibility visibility
width width
z-index zIndex

Usage

Internet Explorer

document.all.div_id.style.JS_property_reference = "new_CSS_property_value";



Older Netscape's (4.7 and earlier)

document.div_id.JS_property_reference = "new_CSS_property_value";



Netscape 6.0+ and Opera (and other Mozilla)

document.getElementById(div_id).style.JS_property_reference = "new_CSS_property_value";

Note the use of parentheses instead of square brackets in newer Mozilla's "getElementById()" reference.

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章