导致页面布局混乱的几个元凶

本文探讨了导致页面布局混乱的三个关键因素:盒子模型塌陷、浮动导致的父元素高度塌陷以及使用display:inline-block时的问题,并提供了相应的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、盒子模型塌陷

盒子模型塌陷:子元素设置外间距margin-top,导致父元素连带向下,如下图

代码如下:

 * {
            margin: 0;
            padding: 0;
        }
        .box1 {
            width: 300px;
            height: 300px;
            background-color: #0077aa;
            /*border-top: 1px solid blue;*/
            /*padding: 1px;*/
            /*overflow: hidden;*/
        }

        .box2 {
            width: 150px;
            height: 150px;
            background-color: yellowgreen;
            margin-top: 20px;
        }

    <div class="box1">
        <div class="box2"></div>
    </div>

解决方法

 1.给父元素设置border(border-top)
 2.给父元素设置padding(padding-top)
 3.给父元素设置overflow:hidden

二、浮动导致的父元素高度塌陷

父元素高度塌陷:当父元素未设置高度时,其高度为子元素高度,当子元素浮动时,父元素高度变为0,此时父元素下面的元素就会往上移,导致页面布局混乱,如下图:

代码如下:

.box {
            border: 1px solid red;
            /*height: 200px;*/
            /*overflow: hidden;*/
        }
.content {
            width: 200px;
            height: 200px;
            background-color: aqua;
            border: 1px solid blue;
            float: left;
            box-sizing: border-box;

        }

        /*.clear {
            clear: both;
        }*/

<div class="box">
    <div class="content"></div>
    <!--<div class="clear"></div>-->
</div>

解决方法:

1.给父元素设置高度
2.给父元素设置overflow: hidden;
3.添加一个空标签清除浮动

三、使用display:inline-block

原本是块元素的元素在使用display:inline-block后会排成一行,此时元素与元素间会留下大约5px的距离,如果不处理,会导致一行排不下,影响页面布局,如下图:

代码如下:

 * {
            margin: 0;
            padding: 0;
        }

        /*ul {
            font-size: 0;
        }*/

        li {
            list-style: none;
            display: inline-block;
            /*font-size: 16px;*/
        }

<ul>
    <li>手机</li>
    <li>运营商</li>
    <li>数码</li>
</ul>

解决方法:

1.方法一:给父元素设置font-size: 0; 然后给子元素设置font-size。

2.方法二:将子元素之间的空格和回车键全部删去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值