完美解决 flex 实现一行三个,显示多行,左对齐

文章介绍了如何使用CSS的flex布局和calc()函数实现响应式设计,展示了如何控制元素的宽度、高度以及间距,强调了calc()函数的正确写法。

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

效果图

在这里插入图片描述

代码

<body>
    <section class="content">
        <div class="item">元素</div>
        <div class="item">元素</div>
        <div class="item">元素</div>
        <div class="item">元素</div>
        <div class="item">元素</div>
        <div class="item">元素</div>
        <div class="item">元素</div>
    </section>
</body>
<style>
    .content {
        width: 100%;
        display: flex;
        flex-wrap: wrap;
        background-color: skyblue;
    }
    .item {
        flex: 0 0 calc((100% - 10px)/3);
        height: 120px;
        background-color: pink;
        /* 间隙为5px */
        margin: 0 5px 5px 0;
    }
    .item:nth-child(3n) {
        /* 去除第3n个的margin-right */
        margin-right: 0;
    }
</style>

方法二

.item {
    /* flex: 0 0 calc((100% - 10px)/3); */
    width: calc((100% - 10px) / 3);
    height: 120px;
    background-color: pink;
    /* 间隙为5px */
    margin: 0 5px 5px 0;
}
注意calc写法

1、错误的格式:width:calc(100%-10px);

2、正确格式:width:calc(100% - 10px);

减号左右要留有空格,咱们只管用,也不敢问这是为什么

Grid实现

在这里插入图片描述

代码
    <div class="grid">
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
        <div class="pink"></div>
    </div>
<style>
        .grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr); /* 1fr占用空间表示份数,这表示3列,每列都占1份 */
            /* grid-template-columns: 2fr 1fr 1fr; */ /* 第一列占 2 份,后两列各占 1 份(总宽度被分成 4 份) */
            grid-template-rows: repeat(3, 1fr);
            gap: 10px;
            width: 100vw;
            height: 200px;
            background-color: skyblue;
        }

        .pink {
            overflow: hidden;
    		white-space: nowrap;
            background-color: pink;
        }
    </style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值