2010-08-06 59 views
0

我有两个div元素,其中一个环绕另一个。然后我使用JavaScript在运行时将边框添加到外部div。不知何故,当外框改变时,基于webkit的浏览器不会执行重排。最终的结果看起来很丑 - 内部的div溢出了外部。这里是HTML代码: [div id =“outer”[div id =“inner”style =“border:solid blue;高度:50像素; “] [/ DIV] [/ DIV]动态更改边框到DOM元素时Webkit重排问题

事件处理程序也很简单: 的document.getElementById(” 外 “)的setAttribute(” 风格”, “边境:纯绿色”)

我简直不敢相信,当我发现了这一点,因为它是这样一个简单的回流任务。还是我缺少什么?有没有人遇到类似的问题,有什么解决办法?谢谢。

+0

对不起的HTML没有显示出: [DIV ID =”外部“] [div id =”inner“style =”border:solid blue; height:50px“] [/ div] [/ div] – 2010-08-06 16:28:08

回答

0

border: solid green没有说明任何大小,例如:"border:1px solid green"

我不认为它可以安全地重置整个style属性,因为你可能会搞砸其他一些东西。尝试添加一个类到className,这是一个更清洁。

+0

”border:solid green“是一个完美有效的CSS语句。我不明白你想说什么。请回答我的原始问题。 – 2010-08-06 18:41:09

+0

你可以请一个这样的jsfiddle吗? – 2010-08-06 18:49:59

+0

这里你去:http://jsfiddle.net/SsKKR/ – 2010-08-06 19:08:48

0

如果您将外部和内部设置为float:left,它将按计划工作。然而,你需要给它一个固定的宽度或者在div(内部)内部有内容。

#outer { float: left;} 
#inner { float: left;} 

[DIV ID = “外”] [DIV ID = “内部”]文本[/ DIV] [/ DIV]

+0

浮动的div似乎触发回流。我在做“显示:内联块;”并有类似的效果。需要额外的标记(清除浮点数或添加换行符等)以支持这些变通方法,这很丑陋。我只是想知道为什么Webkit甚至无法处理这样简单的事情。 – 2010-08-11 16:45:40