JavaScript 读取和设置文档元素的样式属性
本文详解JavaScript中读取和设置文档元素样式的方法。区分内联样式与外部样式表的优先级,介绍通过style属性直接读写内联样式的技巧,并重点讲解利用currentStyle(IE)和getComputedStyle(Firefox/标准浏览器)获取最终渲染样式的兼容写法,提供完整代码示例及单位处理建议。
CSS样式优先级分类
首先讨论样式表的属性分类。
第一类是内联样式,即直接写在元素style属性中的样式,其优先级最高。
第二类是页面内部样式表,定义在页面的<style>标签内,优先级次之。
第三类是外部链接的样式表文件。
直接读写内联样式
接下来介绍如何使用JavaScript获取和设置文档元素的CSS属性。
第一种方法是获取元素style属性中直接设置的样式值。
代码示例为:document.getElementById(id).style.height;
如果该属性存在,则返回其值;如果不存在,则返回空值。
在IE和Firefox浏览器中均可使用,但部分属性值的返回格式可能不同。例如,颜色属性在Firefox中通常返回rgb格式,而在IE中则返回十六进制数值。
以下是测试代码示例。
<script type="text/javascript">
function getCss(){
alert(document.getElementById("aaa").style.height);
alert(document.getElementById("aaa").style.backgroundColor);
alert(document.getElementById("aaa").style.width);
document.getElementById("aaa").style.backgroundColor = '#dbdbdb';
//alert(myWidth);
}
</script>
<div id="aaa" class="bbb" style="height:20px; background-color:#FF0000;">
asdfasdfas
</div>
<input type="button" value="点击" onclick="getCss();" />
获取最终渲染样式与跨浏览器兼容
第二种情况是,当样式可能在多处定义(如外部样式表或内联样式)且不确定具体生效来源时,需要获取当前页面实际渲染的样式值。这在IE和Firefox中的实现方式有所不同。
示例代码片段如下:
IE浏览器:document.getElementById('aaa').currentStyle.height
Firefox等标准浏览器:document.defaultView.getComputedStyle(aaa,null).getPropertyValue('height')
这两个属性返回的是只读值。若要修改元素样式,仍需使用style属性,因为直接写入style属性的内联样式优先级最高,会直接生效。
为了兼容IE和Firefox,可以编写一个统一的函数来获取真实样式。
代码如下:
function getRealStyle(id,styleName) {
var element = document.getElementById(id);
var realStyle = null;
if (element.currentStyle)
realStyle = element.currentStyle[styleName];
else if (window.getComputedStyle)
realStyle = window.getComputedStyle(element,null)[styleName];
return realStyle;
} 调用示例:cur_height = parseInt(getRealStyle(CON_ID,'height'));
注意:返回值通常包含单位(如px),如需进行数值计算,应使用parseInt函数提取数字部分。
JS怎么实现页面强制刷新
2026-11-05 14:53:38
点击JS链接直接运行不下载?前端实现.js文件强制下载的三种方法
2026-11-05 12:12:23
怎么封装一个通用的JS创建元素辅助函数
2026-11-05 11:41:41
Swiper.js 怎么监听滑动结束并获取当前索引
2026-11-05 10:57:15
HTML、CSS和JS的关系:Web前端三件套怎么协作
2026-11-04 15:41:40
