Blogger Information
Blog 11
fans 0
comment 0
visits 6558
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用grid实现一个12列栅格布局的组件,并grid布局仿写一个页面
Ghcᝰ
Original
705 people have browsed it

12列栅格化布局组件

效果图

html代码部分

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>12列栅格化作业练习</title>
  8. <link rel="stylesheet" href="sgh.css">
  9. </head>
  10. <body>
  11. <!-- 首先给一个大盒子 -->
  12. <div class="container">
  13. <!-- 再给一个行盒子 -->
  14. <div class="rows">
  15. <!-- 再设置行盒子内的项目占用单元格列数 -->
  16. <div class="item col-12">我占用了12列</div>
  17. </div>
  18. <div class="rows">
  19. <!-- 再设置行盒子内的项目占用单元格列数 -->
  20. <div class="item col-3">我占用了3列</div>
  21. <div class="item col-3">我占用了3列</div>
  22. <div class="item col-3">我占用了3列</div>
  23. <div class="item col-3">我占用了3列</div>
  24. </div>
  25. </div>
  26. </body>
  27. </html>

CSS样式表

  1. :root {
  2. font-size: 10px;
  3. }
  4. :root * {
  5. margin: 0;
  6. padding: 0;
  7. box-sizing: border-box;
  8. }
  9. body {
  10. font-size: 1.6rem;
  11. }
  12. li {
  13. list-style: none;
  14. }
  15. a {
  16. color: #666;
  17. /* 去掉A标签下划线 */
  18. text-decoration: none;
  19. }
  20. /* 先给最大的盒子设置边框,然后给大盒子设置宽高,并转换为grid布局 */
  21. .container {
  22. border: 1px solid springgreen;
  23. /* 盒子占视口宽度的80% */
  24. width: 80vw;
  25. /* 盒子占视口高度的80% */
  26. height: 80vh;
  27. /* 把盒子转为grid布局 */
  28. display: grid;
  29. /* 设置项目在盒子容器中的对齐方式为居中对齐 */
  30. place-content: center;
  31. gap: 0.5rem;
  32. }
  33. /* 把行盒子转为grid布局并划分为相同的12等分 */
  34. .container > .rows {
  35. /* 把行盒子转为grid布局 */
  36. display: grid;
  37. /* 给行盒子设置个边框 */
  38. border: steelblue 1px solid;
  39. /* 给行盒子设置设置宽高 */
  40. width: 80rem;
  41. height: 4rem;
  42. grid-template-columns: repeat(12, 1fr);
  43. gap: 0.5rem;
  44. /* 设置项目在网格单元中居中对齐 */
  45. place-items: center;
  46. }
  47. .container > .rows > .item {
  48. /* 同一个给所有项目加个边框 */
  49. border: violet 1px solid;
  50. }
  51. .col-12 {
  52. grid-area: auto / span 12;
  53. }
  54. .col-11 {
  55. grid-area: auto / span 11;
  56. }
  57. .col-10 {
  58. grid-area: auto / span 10;
  59. }
  60. .col-9 {
  61. grid-area: auto / span 9;
  62. }
  63. .col-8 {
  64. grid-area: auto / span 8;
  65. }
  66. .col-7 {
  67. grid-area: auto / span 7;
  68. }
  69. .col-6 {
  70. grid-area: auto / span 6;
  71. }
  72. .col-5 {
  73. grid-area: auto / span 5;
  74. }
  75. .col-4 {
  76. grid-area: auto / span 4;
  77. }
  78. .col-3 {
  79. grid-area: auto / span 3;
  80. }
  81. .col-2 {
  82. grid-area: auto / span 2;
  83. }
  84. .col-1 {
  85. grid-area: auto / span 1;
  86. }

使用grid仿写某首页布局

效果图

html代码部分

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>使用grid布局仿写PHP中文网首页布局</title>
  8. <!-- 引入样式表 -->
  9. <link rel="stylesheet" href="index.css">
  10. <link rel="stylesheet" href="main.css">
  11. </head>
  12. <body>
  13. <!-- 首先给个头部导航盒子 -->
  14. <div class="header">
  15. <div class="logo">logo</div>
  16. <div class="sy">首页</div>
  17. <div class="spjc">视频教程</div>
  18. <div class="rmjc">入门教程</div>
  19. <div class="sqwd">社区问答</div>
  20. <div class="jswz">技术文章</div>
  21. <div class="zyxx">资源下载</div>
  22. <div class="bccd">编程词典</div>
  23. <div class="gjxz">工具下载</div>
  24. <div class="phppx">PHP培训</div>
  25. <div class="dlzc">
  26. <div>登录</div>
  27. <div>注册</div>
  28. </div>
  29. </div>
  30. <!-- 然后给主体内容一个大盒子,再再大盒子中拆分无数个盒子布局 -->
  31. <div class="main">
  32. <div class="main-1">
  33. <div class="zcdh">
  34. <ul class="dhlb">
  35. <li class="item">左导航1</li>
  36. <li class="item">左导航2</li>
  37. <li class="item">左导航3</li>
  38. <li class="item">左导航4</li>
  39. <li class="item">左导航5</li>
  40. <li class="item">左导航6</li>
  41. <li class="item">左导航7</li>
  42. <li class="item">左导航8</li>
  43. </ul>
  44. </div>
  45. <div class="dbdh">
  46. <div class="item">顶部导航1</div>
  47. <div class="item">顶部导航2</div>
  48. <div class="item">顶部导航3</div>
  49. <div class="item">顶部导航4</div>
  50. <div class="item">顶部导航5</div>
  51. <div class="item">顶部导航6</div>
  52. <div class="item">顶部导航7</div>
  53. <input type="" name="" value="搜索内容" class="ssk">
  54. </div>
  55. <div class="lbt">这里是轮播图</div>
  56. <div class="dbst">
  57. <div class="tupian">图1</div>
  58. <div class="tupian">图2</div>
  59. <div class="tupian">图3</div>
  60. <div class="tupian">图4</div>
  61. </div>
  62. </div>
  63. <div class="main-2">这里是15期先上班广告</div>
  64. </div>
  65. <!-- 最后给个页脚 -->
  66. <div class="footer">
  67. 页脚
  68. </div>
  69. </body>
  70. </html>

CSS部分1

  1. /* 先设置以下默认设置属性 */
  2. :root {
  3. /* 根元素设置字体为10像素方便计算 */
  4. font-size: 10px;
  5. }
  6. :root * {
  7. /* 去除外边距 */
  8. margin: 0;
  9. /* 去除内边距 */
  10. padding: 0;
  11. /* 转换为IE盒子 */
  12. box-sizing: border-box;
  13. }
  14. body {
  15. /* 恢复body16像素字号 */
  16. font-size: 1.6rem;
  17. }
  18. li {
  19. /* 去掉列表前面的小圆点 */
  20. list-style: none;
  21. }
  22. a {
  23. /* 给A标签字体颜色换一下 */
  24. color: rgb(81, 80, 80);
  25. /* 去掉A标签的下划线 */
  26. text-decoration: none;
  27. }
  28. /* 处理头部和页脚 */
  29. .header {
  30. /* 先给头部的宽高设置以下,加个边框和颜色 */
  31. width: 100vw;
  32. height: 6rem;
  33. border: orchid 1px solid;
  34. /* 把头部转为grid布局 */
  35. display: grid;
  36. /* 利用学到的知识把盒子列宽分为12等分 */
  37. grid-template-columns: repeat(12, 1fr);
  38. /* 给所有项目设置一下在单元格居中对齐 */
  39. place-items: center;
  40. /* 设置一下头部和主题之间的间隔,使用margin挤点空间出来 */
  41. margin-bottom: 1rem;
  42. background-color: slategrey;
  43. }
  44. .header > .logo {
  45. /* 改动自身项目在单元格中的对齐方式垂直居中,水平局左 */
  46. place-self: center start;
  47. /* 给自己左内边距加一点空间 */
  48. padding-left: 0.5rem;
  49. }
  50. .header > .dlzc {
  51. /* 让他横跨2列后,垂直居中,水平局右对齐 */
  52. grid-area: auto / span 2;
  53. place-self: center end;
  54. /* 用内边距挤压一下,让自身不要太贴近边框 */
  55. padding-right: 2rem;
  56. /* 把他转换为flex布局让里面的2个项目水平排列 */
  57. display: flex;
  58. }
  59. .header > .dlzc > div:last-of-type {
  60. /* 给最后一个DIV用外边距拉开一下两个盒子的距离 */
  61. margin-left: 3rem;
  62. }
  63. .main {
  64. /* 给主体设置宽高 */
  65. /* 宽度给80%,给个最小高度 */
  66. width: 80vw;
  67. min-height: 500px;
  68. margin: 0 auto 1rem auto;
  69. /* 给个边框 */
  70. border: yellowgreen 1px solid;
  71. }
  72. .footer {
  73. /* 设置一下页脚宽高 */
  74. width: 100vw;
  75. height: 10rem;
  76. /* 弄个颜色和边框 */
  77. background-color: slategrey;
  78. border: tomato 1px solid;
  79. text-align: center;
  80. }

CSS部分2

  1. .main > .main-1 {
  2. /* 主体大盒子内的中盒子 ,第一步先转为grid布局*/
  3. display: grid;
  4. /* 给个盒子宽高 ,宽度让他占满父元素*/
  5. width: 100%;
  6. height: 300px;
  7. /* 给个边框,所有边框后期可统一去掉 ,设计时根据需求打开*/
  8. border: solid 1px violet;
  9. /* 把中盒子搞成2列3行 */
  10. grid-template-columns: 1.5fr 8.5fr;
  11. grid-template-rows: 1fr 6fr 3fr;
  12. /* 让所有项目在网格单元中垂直水平居中 */
  13. place-items: center;
  14. gap: 0.5rem;
  15. }
  16. .main > .main-1 > .zcdh {
  17. /* 让左侧导航横跨3行 */
  18. grid-area: span 3 / auto;
  19. /* display: grid; */
  20. /* 给导航盒子设置一下宽高 */
  21. width: 100%;
  22. height: 100%;
  23. }
  24. .main > .main-1 > .zcdh > .dhlb {
  25. display: grid;
  26. /* 再把左侧导航转为grid布局并垂直分为8个等分行 */
  27. grid-template-rows: repeat(8, calc(298px / 8));
  28. /* 让所有项目在容器中垂直居中,水平局左 */
  29. place-items: center start;
  30. /* 给点内边距,让项目不要贴近边框 */
  31. padding-left: 1rem;
  32. }
  33. .main > .main-1 > .dbdh {
  34. /* 先把中盒子的顶部网格单元盒子转为grid布局容器 */
  35. display: grid;
  36. /* 把盒子分成9等分列 */
  37. grid-template-columns: repeat(9, 1fr);
  38. /* 给容器设置宽高占满父元素 */
  39. width: 100%;
  40. height: 100%;
  41. /* 让项目在网格单元中垂直居中 */
  42. place-items: center;
  43. /* 给点间距,火车轨道 */
  44. gap: 0.5rem;
  45. }
  46. .main > .main-1 > .dbdh > .ssk {
  47. /* 给搜索框横跨2行 */
  48. grid-area: auto / span 2;
  49. }
  50. .main > .main-1 > .lbt {
  51. border: teal 1px solid;
  52. width: 100%;
  53. height: 100%;
  54. text-align: center;
  55. }
  56. .main > .main-1 > .dbst {
  57. /* 把项目转为网格容器 */
  58. display: grid;
  59. grid-template-columns: repeat(4, 1fr);
  60. width: 100%;
  61. height: 100%;
  62. place-items: center;
  63. /* margin: auto; */
  64. border: lawngreen 1px solid;
  65. gap: 0.5rem;
  66. }
  67. .main > .main-2 {
  68. width: 100%;
  69. height: 30px;
  70. text-align: center;
  71. border: 1px red solid;
  72. margin: 1rem 0;
  73. }
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post