CSS 解决父级边框塌陷问题的四种解决办法


在这里插入图片描述

1.通过设置父元素的高度解决父级边框塌陷

弊端
高度不好把控
元素固定高度会降低扩展性

<html>
    <head>
        <title>浮动</title>
        <style>
        	div{
			    margin: 10px;
			    padding: 5px;
			}
			#father{
			    /* 方法一:加高height */
			    height: 400px;
			    border: 1px #000 solid;
			}
			.layer01{
			    border: 1px #f00 dashed;
			    float: left;
			}
			.layer02{
			    border: 1px #00f dashed;
			    float: left;
			}
			.layer03{
			    border: 1px #060 dashed;
			    float: right;
			}
			.layer04{
			    border: 1px #666 dashed;
			    font-size: 12px;
			    line-height: 23px;
			    clear: both ; 
			    float: left;
			}
        </style>
    </head>
    <body>
        <div id="father" class="clear"</div>
            <div class="layer01"><img src="imge/1.png" alt=""></div>
            <div class="layer02"><img src="imge/2.png" alt=""></div>
            <div class="layer03"><img src="imge/3.png" alt=""></div>
            <div class="layer04">
                浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止.本网页中共有三个图片,分别代表块元素一 块元素二 块元素三 
                这里使用这三个图片和本段文字来演示讲解浮动在网页中的应用,根据需要图片所在的div块元素分别向左浮动 向右浮动 或者不浮动.
            </div>
        </div>
    </body>
</html>

2.通过浮动元素后加空白div解决父级边框塌陷

<html>
    <head>
        <title>浮动</title>
        <style>
        	div{
			    margin: 10px;
			    padding: 5px;
			}
			#father{
			   border: 1px #000 solid;
			}
			.layer01{
			    border: 1px #f00 dashed;
			    float: left;
			}
			.layer02{
			    border: 1px #00f dashed;
			    float: left;
			}
			.layer03{
			    border: 1px #060 dashed;
			    float: right;
			}
			.layer04{
			    border: 1px #666 dashed;
			    font-size: 12px;
			    line-height: 23px;
			    clear: both ; 
			    float: left;
			}
			/* 方法二: 加空白div*/
			.layer05{
			   clear: both;
			}
        </style>
    </head>
    <body>
        <div id="father" class="clear"</div>
            <div class="layer01"><img src="imge/1.png" alt=""></div>
            <div class="layer02"><img src="imge/2.png" alt=""></div>
            <div class="layer03"><img src="imge/3.png" alt=""></div>
            <div class="layer04">
                浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止.本网页中共有三个图片,分别代表块元素一 块元素二 块元素三 
                这里使用这三个图片和本段文字来演示讲解浮动在网页中的应用,根据需要图片所在的div块元素分别向左浮动 向右浮动 或者不浮动.
            </div>
            <div class="layer05"></div>
        </div>
    </body>
</html>

弊端

如果需要多个空白div,容易造成html标签冗余

3.通过after伪类实现解决父级边框塌陷

页面结构不动只在clear类后面添加after伪类,内容为空;把添加的内容转化为块元素,清除这个元素两边的浮动。写法稍微复杂一点,但是没有副作用,推荐使用

<html>
    <head>
        <title>浮动</title>
        <style>
        	div{
			    margin: 10px;
			    padding: 5px;
			}
			#father{
			    border: 1px #000 solid;
			}
			.layer01{
			    border: 1px #f00 dashed;
			    float: left;
			}
			.layer02{
			    border: 1px #00f dashed;
			    float: left;
			}
			.layer03{
			    border: 1px #060 dashed;
			    float: right;
			}
			.layer04{
			    border: 1px #666 dashed;
			    font-size: 12px;
			    line-height: 23px;
			    clear: both ; 
			    float: left;
			}
			/* 方式三:父级添加伪类after */
			.clear:after{
			    content: '';        /* 在clear类后面添加内容为空 */
			    display: block;     /* 把添加的内容转化为块元素 */
			    clear: both;        /* 清除这个元素两边的浮动 */
			} 
        </style>
    </head>
    <body>
        <div id="father" class="clear"</div>
            <div class="layer01"><img src="imge/1.png" alt=""></div>
            <div class="layer02"><img src="imge/2.png" alt=""></div>
            <div class="layer03"><img src="imge/3.png" alt=""></div>
            <div class="layer04">
                浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止.本网页中共有三个图片,分别代表块元素一 块元素二 块元素三 
                这里使用这三个图片和本段文字来演示讲解浮动在网页中的应用,根据需要图片所在的div块元素分别向左浮动 向右浮动 或者不浮动.
            </div>
        </div>
    </body>
</html>

4.通过为父级边框添加overflow属性现解决父级边框塌陷

overflow属性

属性值说明
visible默认值,内容不会被修剪,会呈现在盒子之外
hidden内容会被修剪,并且其余内容是不可见的
scroll内容会被修剪,但是浏览器会显示滚动条,以便查看其内容
auto如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容

弊端
下拉列表框的场景不能使用

<html>
    <head>
        <title>浮动</title>
        <style>
        	div{
			    margin: 10px;
			    padding: 5px;
			}
			#father{
				border: 1px #000 solid;
			    /* 方法四: 父级添加overflow属性 */
	   			 overflow: hidden;
			}
			.layer01{
			    border: 1px #f00 dashed;
			    float: left;
			}
			.layer02{
			    border: 1px #00f dashed;
			    float: left;
			}
			.layer03{
			    border: 1px #060 dashed;
			    float: right;
			}
			.layer04{
			    border: 1px #666 dashed;
			    font-size: 12px;
			    line-height: 23px;
			    clear: both ; 
			    float: left;
			}
        </style>
    </head>
    <body>
        <div id="father" class="clear"</div>
            <div class="layer01"><img src="imge/1.png" alt=""></div>
            <div class="layer02"><img src="imge/2.png" alt=""></div>
            <div class="layer03"><img src="imge/3.png" alt=""></div>
            <div class="layer04">
                浮动的盒子可以向左浮动,也可以向右浮动,直到它的外边缘碰到包含框或另一个浮动盒子为止.本网页中共有三个图片,分别代表块元素一 块元素二 块元素三 
                这里使用这三个图片和本段文字来演示讲解浮动在网页中的应用,根据需要图片所在的div块元素分别向左浮动 向右浮动 或者不浮动.
            </div>
        </div>
    </body>
</html>
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[微信紅包]恭喜发財,大吉大利!

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值