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

一. grid布局

实现代码

javascript 复制代码
<!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布局

实现代码

javascript 复制代码
<!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布局对于最后一行的的子元素个数不足上一行的子元素个数时,它的子元素也会占满本行,导致最后一行的子元素宽度变大。

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

修改后的代码

javascript 复制代码
<!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>

效果图:

相关推荐
为美好的生活献上中指25 分钟前
java每日精进 5.11【WebSocket】
java·javascript·css·网络·sql·websocket·网络协议
asqq82 小时前
CSS 中的 ::before 和 ::after 伪元素
前端·css
拖孩2 小时前
【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
前端·javascript·css·vue.js·ui组件库
苹果电脑的鑫鑫2 小时前
element中表格文字剧中可以使用的属性
javascript·vue.js·elementui
一丝晨光3 小时前
数值溢出保护?数值溢出应该是多少?Swift如何让整数计算溢出不抛出异常?类型最大值和最小值?
java·javascript·c++·rust·go·c·swift
Wannaer3 小时前
从 Vue3 回望 Vue2:响应式的内核革命
前端·javascript·vue.js
懒羊羊我小弟3 小时前
手写符合Promise/A+规范的Promise类
前端·javascript
赵大仁4 小时前
React vs Vue:点击外部事件处理的对比与实现
javascript·vue.js·react.js
肥肥呀呀呀5 小时前
在Flutter上如何实现按钮的拖拽效果
前端·javascript·flutter
付朝鲜6 小时前
用自写的jQuery库+Ajax实现了省市联动
java·前端·javascript·ajax·jquery