【发布时间】:2012-05-28 18:16:52
【问题描述】:
我正在尝试研究如何在使用 javascript 更改样式属性后恢复为样式表中的值(包括单位)。
在下面的示例中,我希望输出读取 100px(CSS 中的值),而不是 10px,就像 getComputedStyle 给出的那样。
我还将虚拟 div 保留在 top:25px,因此删除 style 属性将不起作用。
我最好的方法是克隆节点并读取高度并存储在属性中(http://jsfiddle.net/daneastwell/zHMvh/4/),但这并没有真正获得浏览器的默认 css 值(尤其是在 ems 中设置的情况下)。
http://jsfiddle.net/daneastwell/zHMvh/1/
<style>
#elem-container{
position: absolute;
left: 100px;
top: 200px;
height: 100px;
}
</style>
<div id="elem-container">dummy</div>
<div id="output"></div>
<script>
function getTheStyle(){
var elem = document.getElementById("elem-container");
elem.style.left = "10px";
elem.style.top = "25px";
var theCSSprop = window.getComputedStyle(elem,null).getPropertyValue("left");
document.getElementById("output").innerHTML = theCSSprop;
}
getTheStyle();
</script>
【问题讨论】:
-
为什么不能使用 CSS 类?然后,您只需添加/删除它们,而不是更改单个样式属性。
-
此外,实际上 left is 的当前值是 10px,因为 getComputerStyle 返回该元素的...计算样式(包括样式属性),而不仅仅是 CSS 中指定的规则.注意:请注意,旧版本的 IE 不支持 getComputedStyle。
-
我正在执行一项调整大小的任务,因此会计算“左”值,因此类无济于事,抱歉没有更具体。
标签: javascript css dom