margin bug (2) IE6双边距bug

发生情况:当给父元素的第一个浮动元素设置margin-left或者margin-right时,元素相应float  left或right,这是margin会加倍

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<title>marginTest2</title>
		<style>
			.left{
				background-color:gray;
				float: left;
			}
			.margin{
				margin-left: 20px;
			}
			.backcolor{
				float:left;
				background-color: red;
			}
		</style>
	</head>
	<body>
		<div class="backcolor">
			<div class="left margin" >ssssss</div>
		</div>
	</body>
</html>
 

正常表现:


IE6下表现:



 解决方法:给浮动元素加上display:inline;  或者将margin-left改成padding-left

 

http://www.hicss.net/do-not-tell-me-you-understand-margin/ 写道
原理分析:
块级对象默认的display属性值是block,当设置了浮动的同时,还设置了它的外边距就会出现这种情况。也许你会问:“为什么之后的对象和第一个对象之间就不存在双倍边距的Bug”?因为浮动都有其相对应的对象,只有相对于其父对象的浮动对象才会出现这样的问题。第一个对象是相对父对象的,而之后对象是相对第一个对象的,所以之后对象在设置后不会出现问题。为什么display:inline可以解决这个双边距bug,首先是inline元素或inline-block元素是不存在双边距问题的。然后,float:left等浮动属性可以让inline元素haslayout,会让inline元素表现得跟inline-block元素的特性一样,支持高宽,垂直margin和padding等,所以div class的所有样式可以用在这个display inline的元素上。
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值