Blogger Information
Blog 22
fans 1
comment 1
visits 22263
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Grid 网格布局的容器与项目属性总结----PHP培训十期线上班
Miss灬懒虫
Original
848 people have browsed it

Grid 网格布局的容器与项目属性总结

概述与总结

通过对网格布局的学习,发现他和flex弹性布局相似的地方不较多,区别只是作用范围上,其中flex主要使用在一维空间,并且比较适合细节的布局和元素布局调整。而grid则宏观上的效果更好一些,这都是得益于他的二位空间操作性。当然二者能做的工作没有必须使用哪一个,主要还是需要看页面的布局需求。尽量以减少代码冗余,以及提供复用性去考虑。

因为个人习惯原因,关于grid的容器和项目属性说明都在代码中,请认真浏览哦 ~.~.~ !

效果图

布局思路

我们以典型的圣杯布局为例,在整个grid容器对齐(现对于页面)上使用了

  1. .container{
  2. /*标准写法
  3. justify-content: center;
  4. align-content: center;
  5. */
  6. /*简写*/
  7. place-content: center;
  8. }

容器内项目的对齐使用了

  1. .container{
  2. /*设置项目(单元格)中元素的对齐方式:
  3. justify-items:center;
  4. align-items:center;
  5. */
  6. place-items: center;
  7. }

目录结构

项目代码

  1. html代码
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Grid布局</title>
  6. </head>
  7. <body>
  8. <div class="container">
  9. <div class="header"><span>header</span></div>
  10. <div class="left-ad">left-ad</div>
  11. <div class="content">content</div>
  12. <div class="right-ad">right-ad</div>
  13. <div class="footer">footer</div>
  14. </div>
  15. </body>
  16. </html>
  1. css代码
  1. /*网格布局涉及的术语:
  2. 1-网格线(grid lines):也就是划分格子的线,可以使用编号或者命名进行区分;
  3. 2-轨道(grid tracks):是指两条网格线中间的空间,轨道的宽度一般使用 px,%,fr来表示(fr表示等分份数的计量单位);
  4. 3-单元格(grid cell):指被四条网格线包围起来的封闭空间(矩形区域);
  5. 4-网格区域(grid area):由多个单元格形成的矩形区域(封闭);
  6. 5-网格间距(grid gap):行或者列之间的间隔;
  7. */
  8. /*grid 网格容器的属性
  9. 1-划分行、列与命名(显式网格):
  10. 1.1 grid-template-rows,定义行(横向)的网格线之间轨道的大小;
  11. 1.2 grid-template-columns,定义列(纵向)的网格线之间轨道的大小;
  12. 其大小可是使用绝对值 px,也可以使用 %,同时也可按照等分份数占比 fr;
  13. 特列: grid-template-columns:100px 1fr ,其中的 ‘1fr’,表示将轨道剩余空间,分配给第二列的单元格;
  14. 1.3 repeat()函数,在轨道大小存在重复时可是使用此函数;
  15. 1.4 minmax()函数,指定轨道大小的 最小值 和最大值;
  16. 1.5 grid-template-area, 用于定义网格区域的名称;
  17. 一般配合网格元素(item项目)的 grid-area 属性来使用;
  18. 2-设置行或者列之间的间隔:
  19. 2.1 grid-row-gap,设置行之间的间隔距离;
  20. 2.2 grid-column-gap,设置列之间的间隔距离;
  21. 简写 grid-gap: 行间距,列间距; ,例如:grid-gap: 20px 30px ;
  22. 3-隐式网格,是指浏览器自动计算生成的网格,一般是未进行显示设置,但是grid容器中存在元素时;
  23. 3.1 grid-auto-columns, 设置隐式网格的列宽;
  24. 3.2 grid-auto-row, 设置隐式网格的行高;
  25. 4-网格的内元素(item项目)的设置:
  26. 4.1 grid-auto-flow, 设置网格中元素(item项目)的排列流动方向/排列方向(默认先行后列);
  27. 4.2 justify-content, 设置网格内所有元素(item项目)的水平方向对齐方式;
  28. 4.3 align-content, 设置网格内所有元素(item项目)的垂直对方向齐方式;
  29. 4.2/4.3 简写: place-content: 水平对齐方式 垂直对齐方式 ;
  30. 4.4 justify-items,设置单元格中内容,在单元格内的水平对齐方式;
  31. 4.5 align-items,设置单元格中内容,在单元格内的垂直对齐方式;
  32. 4.4/4.5 简写:place-items
  33. */
  34. /*grid 网格子元素(item项目/单元格)的属性
  35. 1-定义子元素(item项目/单元格)所在的单元格;
  36. 1.1 grid-column:start/end ,定义项目所在单元格的列的起止线;
  37. grid-row:start/end ,定义项目所在单元格的行的起止线;
  38. 1.2 grid-area: top-lines/left-lines/bottom-lines/right-lines ,按照逆时针顺序定义项目所在单元格的区域;
  39. grid-area: header; 网格项目通过绑定容器中定义的网格区域名字,确认所在区域;
  40. 1.3 justify-self, 设置网格容器中,某一个特定项目(单元格)的水平对齐方式;
  41. align-self, 设置网格容器中,某一个特定项目(单元格)的垂直对齐方式;
  42. 1.3 简写: place-self: 水平对齐方式 垂直对齐方式;
  43. */
  44. /*CSS样式正文
  45. 公共样式*/
  46. *{
  47. margin: 0;
  48. padding: 0;
  49. }
  50. * :not(body){
  51. outline: 1px dashed red;
  52. }
  53. .container{
  54. width: 600px;
  55. height: 400px;
  56. /*转换为网格布局*/
  57. display: grid;
  58. /*划分行和列,设置行和列的间距*/
  59. grid-template-rows: 80px 100px 80px;
  60. grid-template-columns: repeat(3,80px);
  61. grid-gap:10px 15px;
  62. /*定义网格内-项目名字*/
  63. /*设置网格容器本身,在页面的对齐方式:
  64. justify-content: center;
  65. align-content: center;
  66. */
  67. place-content: center;
  68. /*设置项目(单元格)中元素的对齐方式:
  69. justify-items:center;
  70. align-items:center;
  71. */
  72. place-items: center;
  73. }
  74. /*设置网格区域名字*/
  75. .container{
  76. grid-template-areas: 'header header header'
  77. 'left-ad content right-ad'
  78. 'footer footer footer';
  79. }
  80. /*绑定单元格所占区域名字*/
  81. .container>.header{
  82. grid-area: header;
  83. width: 80%;
  84. height: 80%;
  85. background-color: #63a35c;
  86. place-self: center;
  87. /*转换flex 弹性盒子对 内部元素进行居中 */
  88. display: flex;
  89. flex-flow: row nowrap;
  90. justify-content: center;
  91. align-items: center;
  92. }
  93. /*头部内的子元素*/
  94. .container>.header>span{
  95. width: 100px ;
  96. height: 30px;
  97. background-color: #a71d5d;
  98. /*元素内容文本居中*/
  99. line-height: 30px;
  100. text-align: center;
  101. }
  102. /*left-ad侧边栏*/
  103. .container>.left-ad{
  104. grid-area: left-ad;
  105. width: 100%;
  106. height: 100%;
  107. background-color: #9a6e3a;
  108. }
  109. /*主体内容区域*/
  110. .container>.content{
  111. grid-area: content;
  112. width: 100%;
  113. height: 100%;
  114. background-color: wheat;
  115. }
  116. /*right-ad侧边栏*/
  117. .container>.right-ad{
  118. grid-area: right-ad;
  119. width: 100%;
  120. height: 100%;
  121. background-color: #9a6e3a;
  122. }
  123. /*底部版权*/
  124. .container>.footer{
  125. grid-area: footer;
  126. width: 100%;
  127. height: 100%;
  128. background-color: #178cee;
  129. }

属性抄写

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
1 comments
零度 2020-01-01 00:50:54
你们赚大了
1 floor
Author's latest blog post