为什么会IE6有双边距
发布网友
发布时间:2022-04-20 17:07
我来回答
共7个回答
懂视网
时间:2022-04-20 21:28
子元素避免同时使用float和margin。
如:
需要子元素的margin-bottom:20px时,可以给用父元素设置padding-bottom:20px代替。
热心网友
时间:2022-04-20 18:36
出现双边距的条件是当浮动元素的浮动方向和margin的方向一致时才会出现。也就是说,并不是只有块状元素左浮动,且具有左外边距时才有这个BUG,当一个盒子右浮动的同时有一个向右的margin-right的时候,IE6也会把margin-right解析为原来的2倍。当有多个同行元素都浮动了,而且都有同方向的margin,则只有最靠近浮动方向的元素有双边距bug。
解决这个bug有两个方法:
1.给float的元素添加一个display:inline
2.给ie6写一个hack,其值是正常值的一半,即_margin-right:10px;这个方法不推荐,因为要加hack写法,而这个是要尽量避免写的。但是这个正好能够说明这个bug的真实存在。
热心网友
时间:2022-04-20 19:54
1、问题:在IE6下如果某个标签使用了float属性,同时设置了其外补丁“margin:10px 0 0 10px”可以看出,上边距和左边距同样为10px,但第一个对象距左边有20px。
2、解决办法:当将其display属性设置为inline时问题就都解决了。
3、说明:这是因为块级对象默认的display属性值是block,当设置了浮动的同时,还设置了它的外边距就会出现这种情况。也许你会问:“为什么第二个对象和第一个对象之间就不存在双倍边距的BUG”?因为浮动都有其相对应的对象,只有相对于其父对象的浮动对象才会出现这样的问题。第一个对象是相对父对象的,而第二个对象是相对第一个对象的,所以第二个对象在设置后不会出现问题。另外在一些特殊布局中,可能需要组合使用display:block;和display:inline;才能达到预期效果。
当然最坏的情况下,我们就可以使用"margin:10px
0 0 10px;*margin:10px 0 0 10px;_margin:10px 0 0 5px",这种“标准属性;*IE7识别属性;_IE6识别属性”HACK方式解决。4、总结:这个现象仅当块级对象设置了浮动属性后才会出现,内联对象(行级对象)不会出现此问题。并且只有设置左边距和右边距的值才会出问题,上下边距不会出现问题。追问其实IE6产生双边距最主要的原因是神马
追答就是IE6的浏览器不够全面。
我只能这样说了。
--------------------------------
客户的话一般不懂,就喜欢我问,我们这边的也一样,你就睡IE6浏览器不全面,他们肯定会问为什么不全面,你就说,如果全面的话还要IE789 10干嘛?
热心网友
时间:2022-04-20 21:29
浮动方向和边距方向相同的时候会出现双边距
例如以下这个情况.
float:left 和 margin-left:5px 一起用时,ie6 左边距会变成10px
至于触发此bug原因探究没什么意义,这是ie6内部解析问题,能解释清楚的只有微软.!
而且此问题后续IE版本已经解决..所以知道解决方法足已!
看到楼主说客户纠结...你就跟客户说这是ie6本身的问题,不是你代码的问题,你也已经解决....客户还要继续追击..你就叼他...很简单...
热心网友
时间:2022-04-20 23:20
这是IE6一个BUG。只要使用float就会。建议用css hack或者display属性设置吧
热心网友
时间:2022-04-21 01:28
使用CSS的左右外边距,就会有双边距。当然少部分时候代码互相影响的话。可能也会没有!
IE6的BUG是微软都不想去搞得事情,所以你就不要纠结这个问题了!
热心网友
时间:2022-04-21 03:53
这个吗,IE6很过时了吧