html外边距合并,到底是怎么回事

596 阅读2分钟

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

本篇文章适合前端初学者哦~

在我们日常的开发中,尤其在我们绘页面的时候,总会遇到各种各样的样式问题。今天在这里,小编就给大家说一说,我们经常遇见的一些比较诡异的现象吧

比如,大盒子中嵌套小盒子,如果给小盒子添加margin-top属性,则会出现大盒子和小盒子一起向下移动

再比如,两个同级别垂直排列的盒子,给在上面的盒子设置margin-bottom:50px;给在下面的盒子设置margin-top:50px;可是表现的现象却是 两个盒子相距50px,而不是100px

我想不止是我吧,大家肯定是都遇到过这样的问题,那么到底如何去解决这种场景的,这又是个问题。

下面,就给大家来仔细的讲一讲,如果解决,外边距的合并问题

一、父子级元素

先来写个代码,看下具体体现 html代码如下:

<div class="outer">
		<div class="inner"></div>
	</div>

css代码如下:

<style type="text/css">
		
		.outer{
			width: 400px;
			height: 400px;
			background-color: teal;
		}
		.inner{
			width: 200px;
			height: 200px;
			background-color: pink;
			margin-top: 100px;
		}
 
	</style>

效果如下图所示:

image.png

由上图可以看到并没有达到我们想要的效果,此时解决的方法如下:

1、给父级元素添加边框(border)

2、给父级设置over-flow:hidden属性

3、不给子级使用margin属性,给父级添加padding

4、给子级或者父级一方添加浮动

5、给子级或者父级一方添加绝对定位

6、给子级或者父级一方添加属性:display:inline-block;

可以动手去试试看啦,任何一种都可以满足你的需求哦

二、兄弟级元素

1、兄弟元素之间,垂直方向外边距如果都是正数不会叠加,而会发生外边距合并现象,并且外边距最终会取数值较大的。

2、兄弟元素之间,垂直方向外边距如果有一个为负数,会叠加,和普通加减计算一样

3、兄弟元素之间,垂直方向外边距如果都为负数,不会叠加,而会发生外边距合并现象,并且外边距最终会取绝对值较大的。

上面就是本篇文章的所有内容啦,都是平时开发过程中遇到的,但是我想可能去总结的人可能不是很多,所以写了这篇不太有营养的文章分享给大家,溜啦~

小编是前端菜鸟一只,希望可以提出您的宝贵意见哦