给子元素盒子一个垂直外边距margin-top,父元素盒子也会往下走margin-top的值的解决办法

问题出现:

给子元素盒子一个垂直外边距margin-top,父元素盒子也会往下走margin-top的值

	<body>
		<div class="box">
			<div class="content" id="content"></div>
		</div>
	</body>
		div,body{
			padding: 0;
			margin: 0;
		}
		body{
			background-color: darkgrey;
		}
		.box{
			width: 400px;
			height: 400px;
			margin: 50px auto;
			background-color: palegreen;
		}
		.content {
			width: 50%;
			height: 50%; 
			margin-top: 70px;
			background-color: tomato;
		}		
	<script type="text/javascript">
		window.onload = function(){
			var he = document.getElementById('box');
			alert(he.offsetTop);  //70,这里应该是50才对
		}
	</script>

上面的js代码和图片显示:

1.子元素与父元素的margin并没有体现出来

2.子元素与父元素的margin-top的值,应用给了父元素的margin-top


解决办法:

1、修改父元素的高度,增加padding-top样式模拟(padding-top:1px;常用)

		.box{
			width: 400px;
			height: 400px;
			margin: 50px auto;
			background-color: palegreen;
			padding-top: 1px; //添加
		}	
		window.onload = function(){
			var he = document.getElementById('box');
			alert(he.offsetTop); //50
		}
2、为父元素添加border(border:1px solid transparent可用)

		.box{
			width: 400px;
			height: 400px;
			margin: 50px auto;
			background-color: palegreen;
			border: 1px solid transparent; //添加
		}

3、为父元素添加overflow:hidden;样式即可(完美)

		.box{
			width: 400px;
			height: 400px;
			margin: 50px auto;
			background-color: palegreen;
			overflow: hidden; //添加
		}

3、为父元素或者子元素声明浮动(float:left;可用)

		.box{
			width: 400px;
			height: 400px;
			margin: 50px auto;
			background-color: palegreen;
			float: left; //添加
		}


5、为父元素或者子元素声明绝对定位

		.box{
			width: 400px;
			height: 400px;
			margin: 50px auto;
			background-color: palegreen;
			position: absolute; //添加
		}

原因:

      1.当一个元素包含在另一个元素中时(假设没有填充或边框将边界分隔开),它们的顶和/或底边界会发生叠加

      2.只有普通文档流中块框的垂直边界才会发生边界叠加。行内框、浮动框或绝对定位框之间的边界不会叠加。

         详情见:http://blog.csdn.net/weisuochengxuyuan/article/details/17379517


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值