坚强的老罗 發表於 2026-5-3 22:17:00

CSS中外边距塌陷的八种解决方法

<h2>什么是margin-top塌陷</h2>
<p>margin-top塌陷是在CSS的盒子模型中出现的一种现象,描述的是当父元素包裹着一个子元素的时候,当给子元素设置margin-top属性时,此时只是想让子元素的边框距离父元素边框有一段距离,而却出现了父元素的顶端距离body这个边框出现了位移,这就是margin-top塌陷的现象。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202305/2023531171113659.png" /></p>
<h2>满足以下条件就会产生外边距塌陷现象:</h2>
<p>1,子元素在父元素里面</p>
<p>2,子元素中有margin-top或者margin-bottom值</p>
<h2>解决步骤</h2>
<p>直接上代码,我这代码默认是具有外边距塌陷效果的,可以自己解开对应的注释进行调试。</p>
<div class="jb51code">
<pre class="brush:xhtml;">
&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;
&nbsp; &nbsp; &nbsp; xmlns:th=&quot;http://www.thymeleaf.org&quot;
&nbsp; &nbsp; &nbsp; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
&nbsp; &nbsp; &nbsp; xmlns:sec=&quot;http://www.thymeleaf.org/extras/spring-security&quot;
&nbsp; &nbsp; &nbsp; xmlns:shiro=&quot;http://www.pollix.at/thymeleaf/shiro&quot;&gt;
&lt;head&gt;
&nbsp; &nbsp; &lt;meta charset=&quot;UTF-8&quot;&gt;
&nbsp; &nbsp; &lt;title&gt;Title&lt;/title&gt;
&nbsp; &nbsp; &lt;style&gt;
&nbsp; &nbsp; &nbsp; &nbsp; * {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; padding: 0;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; margin: 0;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-8:给【推荐:既能解决margin-top塌陷问题,又不会出现其他附加的未知错误】*/
&nbsp; &nbsp; &nbsp; &nbsp; /*.clearfix::before {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; content: '';
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; display: table;
&nbsp; &nbsp; &nbsp; &nbsp; }*/
&nbsp; &nbsp; &nbsp; &nbsp; #outer {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 100px;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; height: 100px;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; background-color: pink;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-1:给父元素加边框*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*border: 1px solid #fff;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-2:给父元素加溢出css*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*overflow: hidden;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-3:给父元素加固定定位*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*position:fixed;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-4:给父元素加浮动【不推荐,可能带来未知的错误】*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*float: left;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-5:给父元素设置display:table;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*display: table;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*padding: 0 10px 0 10px;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-6:使用子绝父相*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*position: relative;*/
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &nbsp; &nbsp; #inner {
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 50px;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; height: 50px;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; margin-top: 30px;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-6:使用子绝父相*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*position: absolute;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*解决外边距塌陷的解决代码-7:给子元素加浮动【一样不推荐】*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*float: left;*/
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; background-color: aquamarine;
&nbsp; &nbsp; &nbsp; &nbsp; }
&nbsp; &nbsp; &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;outer&quot; class=&quot;clearfix&quot;&gt;
&nbsp; &nbsp; &lt;div id=&quot;inner&quot;&gt;
&nbsp; &nbsp; &nbsp; &nbsp; 内部
&nbsp; &nbsp; &lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
頁: [1]
查看完整版本: CSS中外边距塌陷的八种解决方法