今天同事给我看了一个display:none引起的3像素的BUG,非常奇怪!从来没碰到过display:none还能引起这种bug。
看代码:
- < div style = "width:300px; margin:20px; border:1px solid #000; overflow:hidden; zoom:1;" >
- < div style = "background:green; width:10px; float:left; height:300px;" > </ div >
- < div style = "background:red; float:left; height:300px; width:280px;" > </ div >
- < div style = "display: none; " > </ div >
- < div style = "background:green; width:10px; float:left; height:300px;" > </ div >
- </ div >
这个是有在ie6下如图

其他浏览器如图:
这个问题真是让人郁闷,感谢greengnn和广州♂锋提供的解决方案:
解决方案1:将最后一个div加一个margin-right:-3px;即
- < div style = "width:300px; margin:20px; border:1px solid #000; overflow:hidden; zoom:1;" >
- < div style = "background:green; width:10px; float:left; height:300px;" > </ div >
- < div style = "background:red; float:left; height:300px; width:280px;" > </ div >
- < div style = "display: none; " > </ div >
- < div style = "background:green; width:10px; float:left; height:300px;margin-right:-3px" > </ div >
解决方案2:将display: none的div换一个形式隐藏:即
原文地址:http://www.alixixi.com/web/a/2009082157648.shtml
- < div style = "width:100px; margin:20px; border:1px solid #000; overflow:hidden; zoom:1;" >
- < div style = "background:green; width:10px; float:left; height:100px;" > </ div >
- < div style = "background:red; float:left; height:100px; width:80px;" > </ div >
- < div style = "position:absolute; visibility: hidden " > </ div >
- < div style = "background:green; width:10px; float:left; height:100px; margin-right:-3px" > </ div >
- </ div >
本文探讨了一个在IE6浏览器中遇到的奇怪问题:一个被设置为display:none的元素导致页面出现3像素的偏差。提供了两种解决方法:一是调整相邻元素的margin值,二是改变隐藏元素的display属性。

被折叠的 条评论
为什么被折叠?



