CSS网格布局

1. grid布局的介绍

1.1 适用场景

1.2 网格布局的概念

1.3 网格轨道

【1】语法

【2】对齐方式

html 复制代码
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      /* 给父亲加网格布局属性 */
      display: grid;
      /* 创建行轨道 */
      grid-template-rows: 100px 100px 100px;
      /* 创建列轨道 */
      grid-template-columns: 100px 100px 100px;
      /* 让列轨道两端对齐 */
      justify-content: space-between;
      width: 320px;
      height: 320px;
      border: 1px solid red;
      margin: 20px;
    }

    .box div {
      background-color: pink;
    }

    /* 1.不要设置行轨道 */
    /* 2.给子盒子高度,让子盒子撑起来 */
    .content {
      /* 给父亲加网格布局属性 */
      display: grid;
      /* 创建列轨道 */
      grid-template-columns: 160px 160px 160px 160px 160px 160px;
      justify-content: space-between;
      width: 1000px;
      margin: 0 auto;
      border: 1px solid red;
    }

    .content div {
      height: 100px;
      background-color: pink;
      margin-bottom: 10px;
    }
  </style>
</head>

<body>
  <div class="box">
    <div class="item1">1</div>
    <div class="item2">2</div>
    <div class="item3">3</div>
    <div class="item4">4</div>
    <div class="item5">5</div>
    <div class="item6">6</div>
    <div class="item7">7</div>
    <div class="item8">8</div>
    <div class="item9">9</div>
  </div>
  <div class="content">
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
  </div>
</body>

【3】绘制网格轨道

【4】网格间距

html 复制代码
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .nav {
      /* 设置网格布局 */
      display: grid;
      /* 定义网格列数 */
      grid-template-columns: repeat(11, 1fr);
      /* 定义网格行数 */
      grid-template-rows: 1fr 1fr;
      width: 935px;
      height: 66px;
      /* border: 1px solid red;*/
      margin: 100% auto;
      gap: 10px;
    }

    /* 设置a的盒子 */
    .nav a {
      background-color: #F6F7F8;
      border-radius: 6px;
      border: 1px solid #F1F2F3;
      /* 居中 */
      text-align: center;
      line-height: 28px;
    }
  </style>
</head>

<body>
  <div class="nav">
    <a href="#">番剧</a>
    <a href="#">动画</a>
    <a href="#">电影</a>
    <a href="#">电视剧</a>
    <a href="#">纪录片</a>
    <a href="#">综艺</a>
    <a href="#">儿童</a>
    <a href="#">成人</a>
    <a href="#">其他</a>
    <a href="#">全部</a>
    <a href="#">音乐</a>
    <a href="#">体育活动</a>
    <a href="#">知识</a>
    <a href="#">其他</a>
    <a href="#">全部</a>
    <a href="#">其他</a>
    <a href="#">全部</a>
    <a href="#">其他</a>
    <a href="#">全部</a>
    <a href="#">其他</a>
    <a href="#">全部</a>
    <a href="#">其他</a>
  </div>
</body>

1.4 auto fil自动填充完成响应式效果

【1】各种函数

【2】响应式效果

html 复制代码
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 整体布局要求 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    .box {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
      max-width: 1350px;
      margin: 30px auto;
      gap: 18px;
    }

    .box video {
      width: 100%;
      height: 100%;
      /* 圆角 */
      border-radius: 18px;
    }
  </style>
</head>

<body>
  <div class="box">
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>
    <video src="../images/china.mp4"></video>

  </div>
</body>

1.5 网格线

html 复制代码
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 整体布局要求 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    .box {
      /* 网格布局 */
      display: grid;
      grid-template-columns: repeat(5, 1fr);
      gap: 10px;
      max-width: 1200px;
      margin: 100px auto;
      /* 边框 */
      border: 1px solid red;
    }

    .box .item {
      height: 120px;
      background-color: pink;
    }

    .box .item:first-child {
      /* 1号线到3号线 */
      /* grid-column: 1/3;
      grid-row: 1/3; */
      /* span 2是跨2个单元格的意思 */
      grid-column: span 2;
      grid-row: span 2;
      height: auto;
    }
  </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 class="item">9</div>
    <div class="item">10</div>
    <div class="item">11</div>
    <div class="item">12</div>

  </div>
</body>

1.6 网格填充方式

html 复制代码
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    /* 整体布局要求 */
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    .box {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-template-rows: 1fr 1fr;
      /* 修改网格填充方式 */
      grid-auto-flow: column;
      gap: 10px;
      max-width: 1760px;
      height: 900px;
      margin: 100px auto;
      border-radius: 20px;
    }

    .box .item {
      background-color: pink;
    }

    .box .item:first-child {
      grid-row: 1/3;
    }

    .box .item:nth-child(3) {
      grid-column: 2/4;
      grid-row: 2/3;
    }
  </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>
</body>

1.7 项目对齐方式

【1】适用场景

【2】语法

1.8 总结

相关推荐
ℋᙚᵐⁱᒻᵉ鲸落30 分钟前
移动端滑动手势冲突:overflow: auto导致外层横向滑动失效
前端·javascript·css·vue.js·html
默_笙2 小时前
🎃 前端学了 Next.js,后端该学啥?NestJS 就是 Node 版的蜜雪冰城
前端·javascript
前端snow3 小时前
ai agent --- 实现 openclaw 定时间效果
前端
码云之上3 小时前
换模型之后,Chatbot 为什么要自己做 compact?
前端·agent·前端工程化
星栈3 小时前
自定义 UI-UX-Pro-Max 的 CSV 知识库,把 AI 生成的后台拉回行业该有的样子
前端·agent·weui
研☆香4 小时前
简单的图片上传 删除 预览
前端
ITresearchGuest4 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·人工智能·信息可视化
慧一居士5 小时前
Vite项目中使用Less步骤,详细使用示例
前端·css
花间相见5 小时前
【LangChain组件03】—— LangChain Agents 执行与状态:工作流程与状态管理实战
java·前端·langchain
kyriewen6 小时前
面试官让我用 AI 重构一个 8 年陈的 React 组件——他说他不看代码,只看我会不会拆
前端·javascript·面试