博客列表 >使用grid实现一个12列栅格布局的组件,并grid布局仿写一个页面

使用grid实现一个12列栅格布局的组件,并grid布局仿写一个页面

Ghcᝰ
Ghcᝰ原创
2021年03月31日 11:09:05707浏览

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. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议