热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS栅格布局grid详解

栅格布局分为常规栅格和行内栅格,值分别为display:grid;和display:inline-grid;但是大多数栅格布局都是块级的。

栅格布局分为常规栅格和行内栅格,值分别为display:grid;和display:inline-grid;但是大多数栅格布局都是块级的。这里有一个需要注意的是,如果我们给一个标签设置了栅格布局,有的css属性和功能也就无法使用了,具体如下:

栅格容器上的所有column属性(column-count、columns等)都会被忽略。

栅格元素没有::first-line和::first-letter伪元素,如果使用,将会别忽略。

栅格容器内部的栅格元素的float和clear属性将被忽略。尽管如此,float属性对栅格容器中子元素的display属性的计算值是有影响的,因为栅格元素的display值在变成栅格元素之前计算的。


属性:gird-template-columns(列设置参数),gird-template-rows(行设置参数)

下面就以设置列参数为例:gird-template-columns可以设置栅格容器有几列,每列的宽度,设置方法如下:

1、固定宽度:gird-template-columns:200px  50%  100px;

这个设置的意思是设置为三列,每列的宽度分别为200px,50%容器的宽度,100px;

2、设置最大最小尺寸:gird-template-columns:200px  minmax(100px,50%)  100px;

设置为三列,中间那一列的意思是最小宽度为100px,最大宽度是50%容器的宽度,

3、份数单位:fr;例如平均分成4列:gird-template-columns:1fr 1fr 1fr 1fr ;

也可以使用固定宽度和fr组合的:gird-template-columns:100px 1fr 200px;

这样设置的意思是把容器份分为三列,第一列为100px,第三列为200px,第二列为容器的剩余宽度,用1fr表示;如果是多列的话,就把除了固定的宽度剩余的空间进行分割比列,按照fr的总数进行相应比例分割。

例如:gird-template-columns:100px 1fr  3fr 200px;

4、让列的宽度尽可能大放下全部内容或者尽可能小显示内容即可,min-content和max-content;

例如:给列设置min-content的时候





这就是自己的宽度根据不同的内容进行显示

中部

尾部的内容是多少呢
第二行第一个
第二行第二列的数据很多文字
第二行第三列

结果如下:

 

设置max-content的时候:





这就是自己的宽度根据不同的内容进行显示

中部

尾部的内容是多少呢
第二行第一个
第二行第二列的数据很多文字
第二行第三列

结果如下:

5、自定义适配内容宽度:fit-content(宽度值);这个值得意思是如果栅格元素内容的宽度小于设置的宽度值,那么就会显示元素内容的宽度,如果超出了设置的宽度值,那么就会根据设置的宽度值显示。

.one{display:grid;grid-template-columns:fit-content(40px) fit-content(50px) fit-content(50px)
}

6、重复创建列或者行:repeat(重复次数,列或者行的宽高值),列或者行的宽高值不止一个,可以是多个,那样的话就是重复多列





这就是自己的宽度根据不同的内容进行显示

中部

尾部的内容是多少呢
这是一个弟弟
其中一些呵呵数据很多文字
我们都是一家

展示结果如下:呈现为2列3行的展示效果

重复多列:grid-template-columns:repeat(3,100px 200px);

7、auto-fill自动填充和自动去除空栅格元素auto-fit,也就是显示有标签元素的栅格

.one{display: grid;grid-template-columns:repeat(auto-fill,100px) repeat(3,450px);grid-template-rows:repeat(3,100px);
}

自动填充结果如下:

自动删除空元素:

这个是auto-fill的

这个是auto-fill的:

8、栅格区域划分grid-template-areas和grid-area,通过设置总共的栅格布局样式和单个栅格的区域进行划分





-->
sssssssssssssssssssssssssssssssssssss
ttttttttt
rrrrrrrrrrr
ggggggg

结果如下:

9、栅格附加元素:列线:grid-row-start;grid-row-end;行线:grid-column-start,grid-column-end;通过这四个属性可以把一块区域的栅格元素部分设置成一个一个标签的内容。通过设置栅格线的初始行和列的位置,围成一个区域把这个区域设置成一个标签的内容区域。

/* 栅格容器样式 */
.one{display:grid;grid-template-columns:repeat(5,100px);grid-template-rows:repeat(5,100px);
}
/* 内容样式 */
.content{grid-row-start:2;grid-row-end:4;grid-column-start:2;grid-column-end:4;
}

还可以在附加元素后面加上span 2等数字代表着初始或者结束向前向后移动两个栅格线的距离。

/* 栅格容器样式 */
.one{display:grid;grid-template-columns:repeat(5,100px);grid-template-rows:repeat(5,100px);
}
/* 内容样式 */
.content{grid-row-start:2;grid-row-end:span 2;grid-column-start:2;grid-column-end:span 2;
}

以上代码和第一种代码的效果是等效的。

除此之外还有隐式的栅格线设置,也就是上边的设置简化版:grid-row和grid-column,设置如下:

/* 栅格容器样式 */
.one{display:grid;grid-template-columns:repeat(5,100px);grid-template-rows:repeat(5,100px);
}
/* 内容样式 */
.content{grid-row:2 / 4;grid-column:2 / 4;
}

 

10、栅格流:grid-auto-flow:row/column;默认栅格排列的方向是横排列,从左到右排列,以列为主导row;如果想要让内容从上到下排列,也就是以行为主导,依次进行排列,这时候就应该设置column:

代码如下:





sssssssssss
ttttttttt
rrrrrrr
ssssssssssssssssssssssg

正常默认排列

grid-auto-flow:column;排列,默认的是先排满一行然后在排下一行,而column是先填满一列再填下一列;

11、设置列宽度和行高度,grid-auto-columns和grid-auto-rows,设置的都是整体的宽度和高度,如果是单独设置一个栅格元素的宽高,那么可以进行覆盖设置。





sssssssssss
ttttttttt
rrrrrrr
ssssssssssssssssssssssg

结果如下:

12、栏距:值得是每一个栅格元素之间的距离,可以通过grid-row-gap和grid-column-gap进行设置,或者使用grid-gap:行间距 列间距;进行设置,具体如下设置每一列间距10px:





sssssssssss
ttttttttt
rrrrrrr
ssssssssssssssssssssssg

13、栅格的对齐方式:分为纵向对齐和横向对齐,

行内方向对齐目标:justify-self,justify-items,justify-content

块级方向对齐元素:align-self,align-items,align-content,

其中justify-self是对栅格单个元素进行横向的对齐(左,中,右),algin-self是对栅格元素进行纵向的对齐(上,中,下)

而justify-items和align-items是对栅格全部的元素进行横向和纵向对齐;

justify-content和algin-content是对整行和整列元素进行对齐和排布。具体请看http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html

以上就是我对grid的基本认识和学习


推荐阅读
  • 前端开发工程师必读书籍有哪些值得推荐?我们直接进入代码复杂版式设置,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid ... [详细]
  • Tkinter Frame容器grid布局并使用Scrollbar滚动原理
    本文介绍了如何使用Tkinter实现Frame容器的grid布局,并通过Scrollbar实现滚动效果。通过将Canvas作为父容器,使用滚动Canvas来滚动Frame,实现了在Frame中添加多个按钮,并通过Scrollbar进行滚动。同时,还介绍了更新Frame大小和绑定滚动按钮的方法,以及配置Scrollbar的相关参数。 ... [详细]
  • CSS|网格-行-结束属性原文:https://www.gee ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 运算放大器使用规则及注意事项
    本文介绍了运算放大器的使用规则和注意事项,包括输入电压的限制、输出直接并接电容的安全性等。通过了解这些规则和注意事项,可以更好地使用运算放大器,避免出现意外情况。 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
author-avatar
沉佩颖岳玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有