5.17心得

1、什么时候margin取最大值而不是相加
margin在垂直取值的时候是重叠的,如果上下盒模型分别都有margin,那么取
较大值。这一点是值得大家注意的了,平时如果在上下两个容器都设置了
margin时,注意垂直取值时并不是两个值相加,而是取较大值。

2:

这是IE6的双边距BUG。当满足下面这三个条件时,就会出现这个BUG:

1、要为块状元素;

2、要左侧浮动;

3、要有左外边距(margin-left)。

出现双边距的条件是当浮动元素的浮动方向和margin的方向一致时才会出现。
也就是说,并不是只有块状元素左浮动,且具有左外边距时才有这个BUG,当
一个盒子右浮动的同时有一个向右的margin-right的时候,IE6也会把margin-
right解析为原来的2倍。当有多个同行元素都浮动了,而且都有同方向的margin
,则只有最靠近浮动方向的元素有双边距bug。

解决这个bug有两个方法:

1.给float的元素添加一个display:inline

2.给ie6写一个hack,其值是正常值的一半,即_margin-right:10px;这个方法不推
荐,因为要加hack写法,而这个是要尽量避免写的。但是这个正好能够说明这
个bug的真实存在。

1:什么时候margin取最大值 而不是相加 2:ie6margin双边距bug怎么解决

标签:right 添加 解决 display 注意 右浮动 写法 正常 这一

原文:http://www.cnblogs.com/wangluo123/p/6869335.html
margin在垂直取值的时候是重叠的,如果上下盒模型分别都有margin,那么取
较大值。这一点是值得大家注意的了,平时如果在上下两个容器都设置了
margin时,注意垂直取值时并不是两个值相加,而是取较大值。
2、IE6里面怎么兼容margin双边距问题
一个div盒子如果设置了margin,并且该div设置了float浮动,那么在IE6下便会产
生双边距问题:如果设置 float:left 那么左边距会是原来margin的两倍;如果是
float:right,那么右边距会是原来margin的两倍。

代码如下:

 

<html>
<head>
<style>
body{
margin:0px;
padding:0px;
}
#box{
float:left;
margin:10px;
width:200px;
height:200px;
background:#696969;
}
</style>
</head>
<body>
<div id="box"></div>
</body>
</html>
IE6这个双边距问题一直没有得到一种很好的解决方法,普遍的做法是把边距设
置为目标边距的1/2,以错对错的方法去实现。2004年之后,有一个工程师发现
了一个简单的解决方法,到现在也是一直用这个方法来消除IE6双边距问题的。
方法很简单:只需要给id为box的这个div加上一条简单的css代码就够了。

 

解决代码:

 

<html>
<head>
<style>
body{
margin:0px;
padding:0px;
}
#box{
_display:inline;
float:left;
margin:10px;
width:200px;
height:200px;
background:#696969;
}
</style>
</head>
<body>
<div id="box"></div>
</body>
</html>
只需要加上" _display:inline; "就可以了。 因为在IE7以及IE7以上的IE版本中,
这个双边距的bug已经修正,前缀符号"_"只有IE6能够识别,所以只需要让IE6去
设置这个属性就足以。

posted on 2017-05-17 22:35  时光在飞逝  阅读(76)  评论(0编辑  收藏  举报