margin兼容之margin-top的传递问题(面试题)

珠峰HTML|CSS精讲视频 admin 247浏览

问题:margin的兼容margin-top的传递

描述:大盒子里面嵌套小盒子,给小盒子添加margin-top值,不但没有实现和大盒子之间的间距,反而传递到大盒子上,导致整体下移

解决兼容性问题:

  1. overflow:hidden解决margin-top的传递问题(此处不是溢出隐藏)
  2. padding-top:1px 这种方法会影响最后实际的高度,需要再高度height的基础上减掉,才不会影响最后实际的高度
  3. border-top:1px 这种方法会影响最后实际的高度,需要再高度height的基础上减掉,才不会影响最后实际的高度
  4. 给子元素的margin-top值改为给父元素加padding-top这样就避免了使用margin-top值导致的传递问题(转移了我们的目标对象)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
/* .wrap{
width: 300px;
height: 300px;
background-color:#f90;
} */
.inner{
margin-top: 20px;
width: 200px;
height: 200px;
background-color: aqua;
}
/* ===========================无情分割线======================= */
/*解决方法1*/
/* .wrap{
width: 300px;
height: 300px;
background-color:#f90;
overflow: hidden;
} */
/*解决方法2*/
/* .wrap{
width: 300px;
height: 299px;
background-color:#f90;
padding-top: 1px;
} */
/* 解决方法3 */
.wrap{
width: 300px;
height: 299px;
background-color:#f90;
border: 0;
border-top-width: 1px;
border-style: solid;
border-color: transparent;
}
/* 解决方法4 */
/* .wrap{
width: 300px;
height: 300px;
background-color:#f90;
padding-top: 20px;
}
.inner{
/* margin-top: 20px; */
width: 200px;
height: 200px;
background-color: aqua;
} */
</style>
</head>
<body>
<div class="wrap">
<div class="inner"></div>
</div>
</body>
</html>

转载请注明:大灰牛博客 » margin兼容之margin-top的传递问题(面试题)