css里面的网格布局

迈不过友情╰ 2023-07-21 08:46 107阅读 0赞

那么首先来说说一下CSS 中 Grid 网格布局与 Grid 栅格系统的关系

CSS跟Grid布局没有半毛钱关系,Grid只不过是人们在遵循CSS规范的框架内摸索出来的一个最佳实践,你完全可以不鸟栅格布局,用CSS裸~奔。
上面似乎等于没说,对不对?CSS是石头,Grid是砖头,页面是一扇墙,整个站点是房子,石头就可以砌墙建房,砖头不过是优化了的石头,砖头跟石头看起来那么理所当然,实际并非必须。君不见blueprint默认24列,bootstrap默认12列,宽度都是接近960,无非这家的砖头宽些,那家的砖头窄些,罢了
作者:Harry Zhu
链接:https://www.zhihu.com/question/28723221/answer/41925001
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

先回答几个小问题
什么是网格布局?
网格布局是CSS的布局方案,它把网页划分成一个个网格,可以任意组合不同的网格来达到目标的布局效果。
那么Grid与Flex的区别
Flex布局:是在一条轴上面的布局(可以看成是一维的),当然也并不是说Flex不能二维布局
Grid布局:是在两条轴上面的布局(可以看成是两维的)

那么现在开始主题

display、grid-template-columns、grid-gap

  1. display: grid; /*确定是网格布局*/
  2. grid-template-columns:10% 40% 40% 10%; /*网格布局列宽为10%,40%,40%,10%*/
  3. /*上式也可表示为:grid-template-columns:1fr 4fr 4fr 1fr; fr为比例单位(推荐使用fr)*/
  4. /*grid-template-columns:repeat(3,1fr),代表重复3次的1fr距离*/
  5. grid-column-gap: 1em; /*网格的列间距宽为1em*/
  6. grid-row-gap: 1em; /*网格的行间距宽为1em*/
  7. /*grid-gap: 1em; 网格的间距宽度,代表上面两个的加强版*/
  8. /*grid-gap: 10em 5em; 前值为行间距,后值为列间距*/

grid-auto-rows

  1. grid-auto-rows: 50px; /*行高为100px*/
  2. /*grid-auto-rows: minmax(100px,auto); 这里含义为当内容不会撑开行高为100xp的盒子的时候行高就是100px,如果撑开了行高就自动 当然也有grid-auto-columns */

justify-items

  1. justify-items: start; /*涵义为:在其网格分布的行轴线开始处对齐,且针对所有的网格,类似与flex的justify-content 其取值有start|end|center|stretch(默认) */

如图:
在这里插入图片描述
align-items

  1. align-items: start; /*按其网格布局的列轴线进行布局,且位置为开始位置,且针对所有的网格,类似与flex的align-items 其取值有start|end|center|stretch(默认) */

align-self

  1. align-self: end; /*按其网格布局的列轴线进行布局,且位置为结束位置,且针对单个网格,类似与flex的align-self 其取值有start|end|center|stretch(默认) */

justify-self

  1. justify-self: end; /*按其网格布局的行轴线进行布局,且位置为结束位置,且针对单个网格 其取值有start|end|center|stretch(默认) */

跨行与跨列:

grid-row 属性是一种 grid-row-start 和 grid-row-end 的缩写(shorthand)形式
grid-column 属性是一种 grid-column-start 和 grid-column-end 的缩写(shorthand)形式

在这里插入图片描述

  1. .box1{
  2. grid-column:1/3; /*代表是box1的列跨度为从第一个列基线到第三个列基线*/
  3. grid-row:1/3 /*代表是box1的行跨度为从第一个行基线到第三个行基线*/
  4. }
  5. .box{
  6. grid-column:3; /*代表是box2的列跨度为第三个*/
  7. grid-row:1/3 /*代表是box2的行跨度为从第一个行基线到第三个行基线*/
  8. }

效果如图:
在这里插入图片描述

grid-template-areas

原图为:
在这里插入图片描述
CSS源码

  1. .wrapper div:nth-of-type(-n+7){
  2. background-color: #2e6da4;
  3. }
  4. .wrapper{
  5. display: grid; /*确定为网格布局*/
  6. grid-template-areas: /*网格布局的各个区域,名字不一定相同,但要突出语义化*/
  7. 'header header header'
  8. 'content content sidebar'
  9. 'box-1 box-2 box-3'
  10. 'footer footer footer'
  11. ;
  12. grid-gap: 1em; /*行列间距为1em*/
  13. }
  14. .header{
  15. grid-area: header; /*类为header的占据grid-template-areas定义的整个header区域,下面的以此类推*/
  16. }
  17. .content{
  18. grid-area: content;
  19. }
  20. .sidebar{
  21. grid-area: sidebar;
  22. }
  23. .box-1{
  24. grid-area: box-1;
  25. }
  26. .box-2{
  27. grid-area: box-2;
  28. }
  29. .box-3{
  30. grid-area: box-3;
  31. }
  32. .footer{
  33. grid-area: footer;
  34. }

效果图为:
在这里插入图片描述

本文只用于个人学习和记录

发表评论

表情:
评论列表 (有 0 条评论,107人围观)

还没有评论,来说两句吧...

相关阅读

    相关 css grid网格布局

    初次认识grid布局,看了官方的文档也很明了([官方文档][Link 1]),然后通过自己的语言和理解,重新对他进行了总结。 > 摘要:网格布局是网站设计的基础,CSS网格模