您现在的位置是:网站首页> 编程资料编程资料
CSS Grid布局教程之网格单元格布局CSS Grid布局教程之浏览器开启CSS Grid Layout汇总CSS Grid布局教程之什么是网格布局使用CSS Grid布局实现网格的流动css 限定GridView宽度并加上滚动条YUI 中的 Grids CSS值得关注和学习的-CSS教程-网页制作-网页教学网5分钟教你学会 CSS Grid 布局
2021-09-05
801人已围观
简介 本文通过各种实例向大家阐述CSS Grid布局,让我们一起领略其强大的魅力,需要的朋友可以参考下
CSS Grid布局对于我等来说就是一个全新的布局,但国外很多同行朋友已对这种布局做了全面的探知。前面花了两篇内容(《CSS Grid布局教程之什么是网格布局》和《CSS Grid布局教程之浏览器开启CSS Grid Layout汇总》)为这篇文章做足了铺垫。或许你想知道的是如何使用?各位看官不用太急,接下来通过各种实例向大家阐述CSS Grid布局,让我们一起领略其强大的魅力。
当然,接下来的示例不是我想出来的,这是我挖出来的,主要制作者是Rachel Andrew。在继续往下阅读之前,我们应该一起感谢Rachel Andrew,感谢他给我们提供这么多有关于CSS Grid Layout的示例。同时如果你想在你的浏览器中能正常的演示接下的有关于CSS Grid Layout的示例,你得先保证你已阅读了《CSS Grid布局教程之浏览器开启CSS Grid Layout汇总》一文,并且按照文章中的方法进行过设置。如果没有话,或许你将看不到下面示例的效果。咱也不纠结了,开始实战吧。
定义一个网格可以给父容器的display
属性设置为grid
或者inline-grid
来定义一个网格。这样你就可以使用grid-template-columns
和grid-template-rows
属性来创建一个网格。
在这个示例中,创建了一个三列网格,其中三个列的列宽是100px
,并且指定列与列之间的间距为10px
。同时网格具有三行,每行的高度是自动的,另外行与行之间的间距是10px
。简单点说就是一个三行三列的网格,并且列与列之间,行与行之间的间距都是10px
。
此时浏览器将容器中的子元素自动填入到每个网格单元格中,当超过指定的列数时,网格会自动换行,如下图所示:
看看代码是怎么完成的:
HTML
CSS
body {
padding: 50px;
}
.wrapper {
display: grid;
grid-template-columns: 100px 10px 100px 10px 100px;
grid-template-rows: auto 10px auto;
}
.box {
background-color: #444;
color: #fff;
font-size: 150%;
padding: 20px;
}
.b,.d,.g,.i {
background-color:red;
}
定义网格的关键代码:
.wrapper {
display: grid;
grid-template-columns: 100px 10px 100px 10px 100px;
grid-template-rows: auto 10px auto;
}
从示例效果中可以看出,.wrapper
容器通过display:grid;
定义成网格,并且使用grid-template-columns:100px 10px 100px 10px 100px;
和grid-template-rows:auto 10px auto;
指定了列宽、列间距,行高和行间距等。对应的子元素.a
、.c
、.e
、.f
、.h
和.j
列宽度为100px
(也就是黑色区域),而.b
、.d
、.g
和.i
是列与列的间距10px
(也就是红色区域)。而且当子元素在一行填不下时,就会自动换行,如.f
~.j
自动换到第二行显示。
网格中的单元格是有网格线划分出来的,那么在网格布局中,同样可以使用网格线来给子元素设置占位区域。基于上例,在容器.wrapper
下面有十个子元素.a
~.j
,接下来看如何通过基于网格线来实现各种在网格布局中的区域。
对于网格线,在网格布局中有两种,一种是列线,另一种是行线。对应的个网格单元格都有列线起始线(grid-column-start
)、列线终止线(grid-column-end
)和行线起始线(grid-row-start
)、行线终止线(grid-row-end
)。
如上图所示,紫色的是列网格线,而蓝色的是行网格线,其中高亮大红的那个单元格列起始线是line3
,列终止线是line4
,行起始线是line3
,行终止线是line4
。也就是说这四条网格线间的区域是一个单元格。
接下来,看一个示例,如何用网格线实现单元格占位区域:
HTML
CSS
body {
padding: 50px;
}
.wrapper {
display: grid;
grid-template-columns: 100px 10px 100px 10px 100px 10px 100px;
grid-template-rows: auto 10px auto 10px auto;
}
.box {
background-color: #444;
color: #fff;
font-size: 150%;
padding: 20px;
text-align: center;
}
.a{
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 1;
grid-row-end: 2;
}
.b {
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 1;
grid-row-end: 2;
}
.c {
grid-column-start: 5;
grid-column-end: 6;
grid-row-start: 1;
grid-row-end: 2;
}
.d {
grid-column-start: 7;
grid-column-end: 8;
grid-row-start: 1;
grid-row-end: 2;
}
.e {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 3;
grid-row-end: 4;
}
.f {
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 3;
grid-row-end: 4;
}
.g {
grid-column-start: 5;
grid-column-end: 6;
grid-row-start: 3;
grid-row-end: 4;
}
.h {
grid-column-start: 7;
grid-column-end: 8;
grid-row-start: 3;
grid-row-end: 4;
}
.i {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 5;
grid-row-end: 6;
}
.j {
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 5;
grid-row-end: 6;
}
在线案例
这种方式可以让你的子元素.a
~.b
定位在任何位置,比如说,你现在想要.a
和.f
对换,那么很简单就能实现:
.a{
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 3;
grid-row-end: 4;
background:red;
}
.f {
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 1;
grid-row-end: 2;
background:orange;
}
运行的效果如下:
前面两个示例向大家演示了如何用网格线实现布局,可以说是简单方便,唯一就是写代码麻烦,要什么grid-column-start
、grid-column-end
等等。其实有一种简写方式,可以让你不再痛苦。
网格线的简写方式,其实就是grid-column
和grid-row
的start
与end
值合并在一起,两者之间用/
来分隔。比如:
.a{
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 1;
grid-row-end: 2;
}
可以写成:
.a{
grid-column: 1 / 2;
grid-row: 1 / 2;
}
这样一来,上例的代码,我们就可以换成简写方式:
.a{
grid-column: 1 / 2;
grid-row: 1 / 2;
}
.b {
grid-column: 3 / 4;
grid-row: 1 / 2;
}
.c {
grid-column: 5 / 6;
grid-row: 1 / 2;
}
.d {
grid-column: 7 / 8;
grid-row: 1 / 2;
}
.e {
grid-column: 1 / 2;
grid-row: 3 / 4;
}
.f {
grid-column: 3 / 4;
grid-row: 3 / 4;
}
.g {
grid-column: 5 / 6;
grid-row: 3 / 4;
}
.h {
grid-column: 7 / 8;
grid-row: 3 / 4;
}
.i {
grid-column: 1 / 2;
grid-row: 5 / 6;
}
.j {
grid-column: 3 / 4;
grid-row: 5 / 6;
}
效果依旧:
在CSS Grid Layout中有一个关键东东,网格区域grid-area
。网格区域他是由四条网格线组成的一个空间,简单点说,一个网格单元格也是一个网格区域(因为他也是有四条网格线组成的一个空间),多个单元格合并在一起也是一个网格区域。这样一来,要实现上例的效果,还可以使用网格区域grid-area
来完成。
在具体做案例之前,先简单的了解,网格区域是由哪几条网格线组成。组成网格区域的网格线顺序是row-start/column-start/row-end/column-end
。每个网格线之间也是使用/
来分隔。
接下来将上例使用网格区域改造一下,改造之后的样式代码如下:
.wrapper {
display: grid;
grid-template-columns: 100px 10px 100px 10px 100px 10px 100px;
grid-template-rows: auto 10px auto 10px auto;
}
.a{
grid-area: 1 / 1 / 2 / 2;
}
.b {
grid-area: 1 / 3 / 2 /4;
}
.c {
grid-area: 1 / 5 / 2 / 6;
}
.d {
grid-area: 1 / 7 / 2 / 8;
}
.e {
grid-area: 3 / 1 / 4 / 2;
}
.f {
grid-area: 3 / 3 / 4 / 4;
}
.g {
grid-area: 3 / 5 / 4 / 6;
}
.h {
grid-area: 3 / 7 / 4 / 8;
}
.i {
grid-area: 5 / 1 / 6 / 2;
}
.j {
grid-area: 5 / 3 / 6 / 4;
}
效果如下:
是不是让你的世界变得更简单了。
总结在这篇文章中主要通过几个简单的实例向大家演示了如何使用定义网格,又是如何使用网格线实现单元格布局,可以说这样的布局弱爆了,和表格的单元格没有什么不一样嘛,但现实是残酷的,我们的布局是星罗万像,没有这么简单。不是说CSS Grid Layout很强大嘛,那又要如何实现一些复杂的布局呢?敬请观注下章分解,向大家阐述如何实现单元格合并效果。
相关内容
- CSS Grid布局教程之浏览器开启CSS Grid Layout汇总CSS Grid布局教程之网格单元格布局CSS Grid布局教程之什么是网格布局使用CSS Grid布局实现网格的流动css 限定GridView宽度并加上滚动条YUI 中的 Grids CSS值得关注和学习的-CSS教程-网页制作-网页教学网5分钟教你学会 CSS Grid 布局
- CSS Grid布局教程之什么是网格布局CSS3中的display:grid,网格布局介绍js和CSS3实现带详情页面的炫酷网格布局特效CSS Grid 网格布局全解析CSS网格布局的示例代码在CSS网格布局中的列中填充项目的实现方法
- 使用CSS Grid布局实现网格的流动CSS Grid布局教程之网格单元格布局CSS Grid布局教程之浏览器开启CSS Grid Layout汇总CSS Grid布局教程之什么是网格布局css 限定GridView宽度并加上滚动条YUI 中的 Grids CSS值得关注和学习的-CSS教程-网页制作-网页教学网5分钟教你学会 CSS Grid 布局
- 纯css3制作网站后台管理面板ai怎么使用CSS属性面板?Dreamweaver中CSS面板该怎么设置?CSS 实现侧滑显示留言面板的网页组件功能
- 浅谈合理架构CSS纯CSS实现家谱树 组织架构树同理 代码分享我的css架构理念—因人而异 没有最优 只有适合
- CSS Sprite从大图中截取小图完整教程css sprites把很多小图集成在一张图片上CSS Sprites 样式生成工具 3.0CSS Sprites简介以及优缺点使用CSS sprite 的好处和坏处分析什么是CSS Sprites(图片合并)技术 图文介绍CSS Sprites详解css sprites技术 CSS Sprites图片切割术与图片优化深入理解浅谈CSS Sprites切图技术
- CSS制作清爽绿色格调图文box通用样式CSS 网页图文混排的10个技巧CSS 网页布局中的图文列表实现代码javascript+CSS 联合打造图文结合动感菜单div css图文混排列表设计中的基础问题总结
- 一款纯css3实现的鼠标悬停动画按钮纯CSS3实现的鼠标悬停图标旋转导航动画特效源码纯css3实现的鼠标悬停背景翻转动画导航特效源码一款纯CSS3实现的鼠标悬停动画按钮集合特效源码 HTML5+CSS3实现的鼠标悬停动画菜单按钮特效源码 纯css3实现的鼠标悬停动画按钮一款基于CSS3实现的鼠标悬停图片动画及多种文字动画效果源码31款纯css3实现的鼠标悬停动画效果源码纯CSS3实现的鼠标悬停图片文字动画效果源码CSS3鼠标悬停动画显示文字特效源码
- 一款纯css3制作的2015年元旦雪人动画特效教程css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 一款利用css3的鼠标经过动画显示详情特效的实例教程css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果