grid布局,flex布局实现类似响应式布局的效果

一. grid布局

实现代码

<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        .box {
   
          display: grid;
          grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /*自动填充,最小宽度300px*/
          justify-content: space-between;
          gap: 10px;
        }

        .item {
   
          background: pink;
          height: 100px;
        }
    </style>
</head>

<body>
    <div class="box">
      <div class="item">1</div>
      <div class="item">2</div>
      <div class="item">3</div>
      <div class="item">4</div>
      <div class="item">5</div>
      <div class="item">6</div>
      <div class="item">7</div>
      <div class="item">8</div>
    </div>
</body>

</html>

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

一. flex布局

实现代码

<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        .box {
   
          display: flex;
          flex-wrap: wrap;
        }
        
        .item {
   
            flex: 1 0 300px; /*1 表示每个 div 元素会按比例占满可用空间,0 表示不允许缩小,300px 表示设置最小宽度为 300 像素 */
            min-width: 300px;
            background: pink;
            height: 100px;
            margin-right: 10px;
            margin-bottom: 10px;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
        <div class="item">7</div>
        <div class="item">8</div>
    </div>
</body>

</html>

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

问题: flex布局对于最后一行的的子元素个数不足上一行的子元素个数时,它的子元素也会占满本行,导致最后一行的子元素宽度变大。

改进一下下: 添加空白元素,使得最后一行的元素与前面的元素同宽。

修改后的代码

<!DOCTYPE html>
<html lang="en">

<head>
    <style>
        .box {
   
          display: flex;
          flex-wrap: wrap;
        }
        
        .item {
   
            flex: 1 0 300px; /*1 表示每个 div 元素会按比例占满可用空间,0 表示不允许缩小,300px 表示设置最小宽度为 300 像素 */
            min-width: 300px;
            background: pink;
            height: 100px;
            margin-right: 10px;
            margin-bottom: 10px;
        }
        .h0{
   
            height: 0;
        }
    </style>
</head>

<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
        <div class="item">7</div>
        <div class="item">8</div>
        <!-- 空元素 (vue里面直接写 v-for="item in 4"-->
        <div class="item h0" ></div>
        <div class="item h0"></div>
    </div>
</body>

</html>

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

相关推荐

  1. CSS Flexbox与Grid:构建响应布局艺术

    2024-01-25 09:08:04       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-25 09:08:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-25 09:08:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-25 09:08:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-25 09:08:04       20 阅读

热门阅读

  1. 基于SQL的分析挖掘案例

    2024-01-25 09:08:04       34 阅读
  2. diffusion 和 gan 的优缺点对比

    2024-01-25 09:08:04       33 阅读
  3. 11.swarm

    2024-01-25 09:08:04       40 阅读
  4. 2024年项目基金撰写与技巧及GPT融合

    2024-01-25 09:08:04       32 阅读
  5. Android 音频焦点管理

    2024-01-25 09:08:04       37 阅读
  6. JVM监控环境搭建之Grafana+Prometheus+Micrometer

    2024-01-25 09:08:04       37 阅读
  7. 第七章 使用 SQL Search - 同义词表

    2024-01-25 09:08:04       31 阅读
  8. Spring-集成Junit

    2024-01-25 09:08:04       41 阅读