子元素浮动后,父容器高度随子元素高度变化

一、问题的提出

main {
            width: 300px;
            border: solid 1px black;
            padding: 20px;
            margin: auto;
        }

        div:nth-child(1) {
             width: 100px;
             height: 100px;
             background-color: red;
             float: left;
        }
        div:nth-child(2) {
            width: 100px;
            height: 100px;
            background-color: blue;
            float: right;
        }
<main>
        <div></div>
        <div></div>
</main>

由于main容器中的2个div都浮动了,而main容器没有指定高度,只是靠着padding撑着,效果如下
在这里插入图片描述

二、问题解决

加入如下代码

.clearfix { // 加入这个样式
            clear: both;
        }
<main>
        <div></div>
        <div></div>
        <article class="clearfix"></article>      // 加入这一行
</main>

加入后效果图如下
在这里插入图片描述

三、原理解释

子元素都浮动后,父容器感知不到子元素的高度,于是撑不起来,但是在子元素后再增加一个块级元素后,如果清除它的浮动影响,那么它是可以感知到前面2个浮动的元素的高度的,而父容器又可以感知到加入的这个块元素的,于是存在传递性,父容器也感知到了那2个浮动的子元素的高度,不得不佩服发现此技巧的人,真的是孰能生巧。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`display: flex` 是 CSS 中的一种布局模式,用于创建灵活的、响应式的容器,允许子元素在一行或多行内自适应调整空间和对齐方式。它主要用于实现弹性盒(Flexbox)布局,提供了一种简单的方式来组织和管理网页或应用中的元素,尤其是在处理单列或多列布局以及响应式设计时非常有用。 当你将一个容器的 `display` 属性设置为 `flex` 或 `inline-flex` 时,容器将变为弹性容器,它的子元素会变为弹性子元素。这些子元素具有以下特点: 1. **主轴对齐**:默认情况下,子元素沿着主轴(通常是水平方向)排列,你可以通过 `justify-content` 属性调整它们的对齐方式。 2. **交叉轴**:垂直于主轴的方向,称为交叉轴。你可以使用 `align-items` 和 `align-content` 控制子元素在交叉轴上的行为。 3. **弹性伸缩**:子元素的 `flex-grow`, `flex-shrink`, 和 `flex-basis` 属性允许它们在空间上动态扩展、收缩和设定初始大小。 4. **基础大小**:`flex-basis` 属性定义了子元素在主轴上的初始大小,可以是定值、百分比或自动(auto)。 浮动子元素通常用 `float` 属性实现,它主要用于传统的布局模式中,让元素脱离文档流,围绕在其他内容旁边。然而,在现代的 Flexbox 布局中,`float` 已经较少使用,因为 Flexbox 提供了更直观且功能更强的控制方式。 如果你想深入了解 Flexbox 的具体用法,这里有几个相关问题供你思考: 1. 如何在 Flex 容器中实现元素的左右对齐? 2. Flexbox 中如何控制子元素在交叉轴上的居中? 3. 如何避免 Flex 子元素高度不同时导致的布局问题?

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值