子元素自动填充父容器, 并且会自动折行- dispaly: grid

很多时候,我们都需要这样的布局

  1. 父元素宽度是resizable
  2. 子元素个数不确定
  3. 子元素无论都少宽度都可以自动填充父元素 当子元素过多时,
  4. 子元素可以自动折行
  5. 每行的子元素宽度一置,都是左对齐
    如图:
    在这里插入图片描述

如果实现以上的1-4的需求,我们完全可以用dispaly:flex;来实现,如:

<style>
    .parent {
        width: 40%;
        border: 3px solid #567856;
        display: flex;
        flex-wrap: wrap;
    }

    .parent>div {
        flex: 1;
        border: 2px solid #567fff;
        min-width: 140px;
        height: 200px;
        margin: 10px;
    }
</style>

<body>
    <div class="parent">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</body>

效果图如下:
在这里插入图片描述
我们发现这确实满足了我们需求的1,2,3,4 但是,你会发现第一行与第二行元素不是对齐的,这样就不满足我们的需求5了,所以我们换一种布局方式,就是dispaly: grid

<style>
    .parent {
        width: 40%;
        border: 3px solid #567856;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
        gap: 10px;
        padding: 10px;
    }

    .parent>div {
        border: 3px solid #567fff;
        height: 150px;
    }
</style>

<body>
    <div class="parent">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</body>

效果图:
在这里插入图片描述

这样就实现了。

下面我们来区分一下auto-fit 与auto-fill 实现效果的区别吧。
在上面的例子中auto-fit 与auto-fill 效果是一样的,让我们删掉一些div,只留3个子元素试试吧。

<style>
    .parent {
        width: 40%;
        border: 3px solid #567856;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); // repeat(auto-fit, minmax(140px, 1fr));
        gap: 10px;
        padding: 10px;
    }
    .parent>div {
        border: 3px solid #567fff;
        height: 150px;
    }
</style>
<body>
    <div class="parent">
        <div></div>
        <div></div>
        <div></div>
    </div>
</body>

其中grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); 效果如图
在这里插入图片描述
而grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); 效果如图
在这里插入图片描述

这下我们明显看到区别了吧。

注:auto-fit和auto-fill只有在容器宽度大于子元素的最小宽度总和时才有显示区别。

auto-fill 最后一步是会保留空轨道留白,不会折叠空轨道,而auto-fit则把空白轨道的空间全部平均分配给了有元素的轨道, 所以auto-fit的最后一步是,折叠空轨道,将空轨道的空间全部平均分配给已有元素的轨道,不留空白。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值