一、父子关系,给子盒子加外边距,但作用到了父身上,怎么解决呢?
<style>
.box1 {
width: 500px;
height: 500px;
background: yellow;
}
.box2 {
width: 200px;
height: 200px;
background: red;
margin-top: 100px;
}
</style>
<body>
<div class="box1">
<div class="box2"></div>
</div>
</body>
根据上面的两张图我们会发现,给子盒子设置margin-top时,会作用到了父盒子身上。那我们有四种方法可以解决这个问题,如下:
1、给父盒子或者子盒子设置浮动 float: left;
2、给父盒子设置 overflow: hidden; 溢出隐藏、清除浮动、解决外边距塌陷、触发BFC规则等等。
3、给父盒子设置 padding-top: 100px; 设置内边距了,但是padding会撑开盒子,会使用盒子变大,所以我们在给父元素设置padding-top: 100px;的同时,父元素的高我们要减100px。这样设置的话,你的盒子就还是宽为500px,高为500px。
4、给父盒子设置边框 border: 1px solid green; 设置有颜色的话,就看得很明显有点丑,我们可以将外边框的颜色设置为透明色 border: 1px solid transparent;记住高度也需要重新计算,高和宽都需要减2px,这样设置的话,你的盒子就还是宽为500px,高为500px。
二、兄弟关系,两个盒子垂直外边距与水平外边距问题。
<style>
.box1,
.box2,
.box3,
.box4 {
width: 200px;
height: 200px;
}
.box1 {
background: red;
margin-bottom: 100px;
}
.box2 {
background: yellowgreen;
margin-top: 50px;
}
.box3 {
float: left;
background: blue;
margin-right: 100px;
}
.box4 {
float: left;
background: blueviolet;
margin-left: 50px;
}
</style>
<body>
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
<div class="box4">box4</div>
</body>