float浮动导致父元素坍塌

今天遇到了一个情况,给子元素指定浮动之后,父元素的背景颜色就消失了。

原来是这个样子的,

.head-li{
            display: inline;
            list-style: none;
            margin-left: 34px;
            border: 4px solid #52a6e8;
            background-color: #66afe9;
        }

float浮动导致父元素坍塌

然后我希望里面的li元素变为浮动。

于是

.head-li{
            display: inline;
            list-style: none;
            margin-left: 34px;
            border: 4px solid #52a6e8;
            background-color: #66afe9;
            float: left;
        }

float浮动导致父元素坍塌

我发现父元素变形了。

原来之前父元素的高度是被子元素撑开的,现在子元素变成浮动了,父元素就没法被撑开了。

经过百度搜索,我发现有以下几种解决方案:

1、 把父元素也改为浮动

但是 这样会影响到布局。

2、给父元素一个固定的高度

这样只适用于子元素高度已知且固定。

3、给父元素加一个

overflow: hidden

当子元素浮动时,父元素会增加高度去包裹子元素,这个高度是自适应子元素的高度。

4、在子元素后面加一个div

<div style="clear:both"></div>

清除浮动

5、after 伪类 对父元素使用 消除浮动

#head-ul:after{
    content: '';
    display: block;
    clear: both;
}

第五种最好!!!

float浮动导致父元素坍塌

上一篇:用TextPaint来绘制文字


下一篇:支持C语言的数学运算和小数