css - 浮动DIV如何自适应高度
天蓬老师
天蓬老师 2017-04-17 13:33:52
[HTML讨论组]
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(5)
PHP中文网

绝对定位和浮动不一样,绝对定位是完全脱离文档流
所以,在子元素采取绝对定位的情况下,是不可能直接靠内容撑开父容器高度的。ps:楼上关于清除浮动回答的很详细,但是在这里感觉答非所问

巴扎黑

关键字: css 清除浮动

由于浮动元素不占据正常的文档流空间,所以其父元素的尺寸是不会被浮动元素撑起来的。

解决办法:

1 在浮动元素后面插入一个空p.clear

.clear {
    clear:both; 
    height: 0; 
    line-height: 0; 
    font-size: 0;
}
.float {
    float: left;
}
<p>
    <p class="float">Float element</p>
    <p class="clear"></p>
</p>

2 父元素overflow: hidden或者display: table来闭合浮动

<p style="overflow: hidden;">
    <p class="float">Float element</p>
</p>

3 巧用伪类

父元素添加类.clearfix

.clearfix:before, .clearfix:after {
    content: " ";
    display: table;
}
.clearfix:after {
    clear: both;
}
/* for ie 6/7 */
.clearfix {
    zoom: 1;
}
<p class="clearfix">
    <p class="float">Float element</p>
</p>
怪我咯

浮动是一个将要被淘汰的属性,你可以选择flex布局

巴扎黑

如果是float导致的父元素高度塌陷,则可以通过清除浮动使父元素被撑开,但是如果是由于absolute导致的父元素高度塌陷,则无法清除,因为绝对定位是完全脱离文档流。

怪我咯

首先。p的高度默认是由内部的子元素撑开来的。
.line的内部为空,高度为0,
.icon和.make绝对定位之后脱离文档流,不占位置(上天了),
.a下面的内容的高度为0。所以高度为0

.a和.b是独立的两块兄弟,得到相同的高度从自动上来说不可能。

PS:absolute != float

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号