CSS布局模式之Flex布局&Grid布局(三)

简介: CSS布局模式之Flex布局&Grid布局

CSS布局模式之Flex布局&Grid布局(二)https://developer.aliyun.com/article/1426127


3.4.3 grid-column-start

grid-column-start是Grid布局中用于指定网格项开始放置列的起点位置的属性。它可以接受数字和关键字值作为输入,并与其他 Grid 属性联合使用,以指定网格项放置和调整它在 Grid 容器中的位置的方式。

具体来说,grid-column-start属性指定网格项开始放置的列的起点位置。它可以接受以下类型的值:

  • :具有整数值的表示列线的编号,从 1 开始(类似于grid-column:  / ;
  • :自定义标识符的名称(类似于grid-column: ;
  • span :指定网格项横跨多少个单元格(类似于grid-column: span ;
  • span :指定网格项横跨多少个命名的列(类似于grid-column: span ;

例如,以下代码显示了一个简单的 Grid 布局,其中两个网格项跨越了两个列:

.container {
  display: grid;
  grid-template-columns: repeat(3, 100px);
  grid-template-rows: 100px 100px;
}
.item1 {
  background-color: red;
  grid-column-start: 1;
  grid-column-end: 3;
}
.item2 {
  background-color: blue;
  grid-column: 2 / 4;
}

在这个例子中,我们定义了一个3列2行的 Grid 容器,并设置了两个子元素,其中一个元素跨越了第1列和第2列,另一个元素跨越了第2列和第3列。其中,.item1 等价于 grid-column-start: 1; grid-column-end: 3;.item2 等价于 grid-column: 2 / 4;。这两种写法都可以达到同样的效果,其中 grid-columngrid-column-startgrid-column-end 的简写方式。

总的来说,grid-column-start属性非常适合于在 Grid 容器中定义跨越多行或多列的网格项,以及调整网格项的位置和大小。

3.4.4 grid-column-end

grid-column-end是Grid布局中用于指定网格项结束放置列的终点位置的属性。它可以接受数字和关键字值作为输入,并与其他 Grid 属性联合使用,以指定网格项放置和调整它在 Grid 容器中的位置的方式。

具体来说,grid-column-end属性指定网格项结束放置的列的终点位置。与grid-column-start不同的是,grid-column-end属性接受的值的范围是从指定的起点位置到下一个位置。它可以接受以下类型的值:

  • :具有整数值的表示列线的编号,从 1 开始(类似于grid-column:  / ;
  • :自定义标识符的名称(类似于grid-column: ;
  • span :指定网格项横跨多少个单元格(类似于grid-column:  / span ;
  • span :指定网格项横跨多少个命名的列(类似于grid-column:  / span ;

例如,以下代码显示了一个简单的 Grid 布局,其中一个网格项跨越了两个列:

.container {
  display: grid;
  grid-template-columns: repeat(3, 100px);
  grid-template-rows: 100px 100px;
}
.item {
  background-color: red;
  grid-column-start: 1;
  grid-column-end: 3;
}

在这个例子中,我们定义了一个3列2行的 Grid 容器,并设置了一个子元素,它跨越了第1列和第2列,并占用了所有行。其中,.item 的起点为第1列,终点为第3列。如果仅使用grid-column属性,则等价于grid-column: 1 / 3;

总的来说,grid-column-end属性非常适合于在 Grid 容器中定义跨越多行或多列的网格项,以及调整网格项的位置和大小。

3.4.5 grid-row和grid-column

grid-rowgrid-column是Grid布局中的简写属性,可以同时指定网格项开始放置的行和列,以及结束放置的行和列。grid-rowgrid-column属性均由两个值组成,第一个值表示开始位置,第二个值表示结束位置。

这两个属性可以接受以下类型的值:

  • :表示表示网格线的编号或自定义名称;
  • span :表示跨越多少个网格线;
  • span :表示跨越多少个自定义名称的网格线。

例如,以下代码展示了如何使用grid-rowgrid-column属性:

.item {
  grid-row: 1 / 3; /* 从第1行到第3行 */
  grid-column: 2 / 4; /* 从第2列到第4列 */
}

在这个例子中,我们定义了一个.item元素,使用grid-row属性指定了该元素应该跨越从第1行到第3行,在列方向上使用grid-column属性指定了该元素应该跨越从第2列到第4列。这意味着该元素将占用第1、2行和第2、3、4列的所有单元格。

总的来说,使用grid-rowgrid-column属性能够使网格项的位置和大小更加直观地描述,并且更容易调整。

3.4.6 grid-area

grid-area是Grid布局中用于同时指定网格项开始放置的行和列以及结束放置的行和列的简写属性。它可以接受数字和关键字值作为输入,并与其他 Grid 属性联合使用,以指定网格项放置和调整它在 Grid 容器中的位置的方式。

grid-area属性由4个值组成,分别表示网格项的开始行、开始列、结束行和结束列。可以使用下列三种方法指定grid-area属性的值:

  • 使用数值和斜线指定起始行和起始列,紧接着使用数值和斜线指定结束行和结束列:grid-area:  /  /  / ;
  • 使用自定义命名网格的名称来代替行或列起始和结束位置的数值:grid-area:  [ /  /  / ];
  • 使用row-spancol-span指定跨越多少行或列:grid-area:  /  / span  / span ;

例如,以下代码展示了如何使用grid-area属性:

.item {
  grid-area: 1 / 2 / 3 / 4;
}

在这个例子中,我们定义了一个.item元素,使用grid-area属性指定了它所跨越的区域,从第1行和第2列开始,到第3行和第4列结束,它将占用第1、2、3行和第2、3、4列的所有单元格。

总的来说,使用grid-area属性方便地指定了网格项的开始和结束位置,并可以使网格项的位置和大小更加直观地描述。

4. 比较

4.1 Flex布局与Grid布局的异同

Flex布局和Grid布局是两种不同的CSS布局模式,它们各自采用不同的策略来对元素进行排列和定位。这里列出一些它们之间的异同点:

异同之处:

1. 相对定位和绝对定位

Flex布局是基于相对定位模型的,它的主要目的是对元素进行适应性布局,相对容器或其他元素进行定位,从而在可变屏幕尺寸和设备上改变它们的位置和大小。而Grid布局是基于绝对定位模型的,它的主要目的是在父级网格容器的单元格中对元素进行排列和定位。

2. 方向

Flex布局只能在主轴和交叉轴方向上排列元素,而Grid布局则可以在行和列上排列元素。

3. 属性

Flex布局具有的主要属性有flex-directionjustify-contentalign-itemsalign-content等。这些属性用于控制Flex容器内Flex项在主轴和交叉轴方向上的位置、对齐方式和空间分布情况,其中flex-direction用于控制主轴方向。而Grid布局则拥有grid-template-rowsgrid-template-columnsgrid-template-areas等属性。这些属性用于定义网格容器的行和列,在行和列上排列和定位网格项。

4. 实现方式

Flex布局通过在Flex容器上应用display: flex属性来启用,并与Flex项目使用诸如flex-growflex-shrinkflex-basis等属性,来指定在空间分布方案。而Grid布局通过在父级元素上应用display: grid来启用,并与网格项使用类似于grid-columngrid-row这样的属性,以指定它们的位置和大小。

相同之处:

1. 容器和项目

Flex布局和Grid布局都基于容器和项目的概念,在容器中包含多个项目,并对这些项目进行计算和布局。

2. 响应式设计

Flex布局和Grid布局都是响应式布局,可以在不同的设备上和屏幕尺寸下自适应排列和定位元素。

总的来说,这两种布局模式都有其特定的用途和优点,可以根据不同的需求和场景进行选择和应用。Flex布局适用于需要快速实现适应性布局的小型项目,而Grid布局则更适用于大型网格布局项目。

4.2 如何选择Flex布局或Grid布局?

根据项目的需求和设计,选择适合的布局模式是非常重要的。

以下是一些考虑以及建议的情况,有助于决定使用Flex布局还是Grid布局:

  1. 需要在单行或单列中排列和对齐元素时,可以使用Flex布局。例如,设计一个水平导航条、水平的图文列表以及一个垂直列布局等等。
  2. 当需要在多行或多列中创建一个网格布局时,可以使用Grid布局。比如设计一个相册模块,产品展示模块等等。Grid 布局以其对齐和罗列功能的出众性能而闻名。
  3. 如果布局需要同时支持网格和工具栏等外观,建议使用Flex布局。因为Flex布局更加灵活适应性强,在整个屏幕上都可以进行排列和对齐。
  4. 如果需要实现项目间比例关系的控制,建议使用Flex布局。因为Flex布局很容易实现元素的比例调整,而Grid布局则需要在行和列上进行指定。
  5. 如果网格布局需要对项目进行复杂的定位操作,建议使用Grid布局。因为Grid布局提供了更多的定位、调整和动态响应机制。

总而言之,选择使用Flex布局还是Grid布局取决于你的项目和需求。它们都有自己的优点和局限性,理解这些优点和局限性并灵活应用它们,可以帮助你更好地设计适应性的Web界面。

相关文章
|
3月前
|
前端开发 算法 Java
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
(CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
157 1
|
3月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
Flex 布局 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 一、Flex 布局是什么? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。
319 2
CSS3 flex的使用方法
display:flex; align-items://水平对齐方式 justify-content://垂直对齐方式 flex://盒子所占大小(如果你盒子里面只有两个div,那么你设置其中之一个flex,那么另外一个会自动填充)
686 0
|
7月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。
|
7月前
|
存储 前端开发 安全
病历单生成器在线制作,病历单生成器app,HTML+CSS+JS恶搞工具
本项目为医疗病历模拟生成器,旨在为医学教学和软件开发测试提供数据支持,严格遵守《医疗机构病历管理规定》。
|
7月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
7月前
|
前端开发 容器
处方单图片生成器, 处方单在线制作免费,js+css+html恶搞神器
这是一个电子处方模拟生成系统,使用html2canvas库实现图片导出功能。系统生成的处方单包含多重防伪标识,并明确标注为模拟数据,仅供学习
|
7月前
|
前端开发 JavaScript 容器
制作b超单生成器, 假怀孕b超单图片制作, p图医院证明【css+html+js装逼恶搞神器】
本资源提供一个适合用于熟人之间恶搞的工具,效果逼真,仅供学习参考与娱乐。包含前端技术学习要点:语义化布局、响应式设计、Flexbox、图片自适应
|
7月前
|
前端开发
医院检查单子p图软件,在线制作仿真病历,js+css+html装逼神器
本示例展示如何用HTML/CSS创建医疗信息页面,内容仅供学习参考。页面模拟“阳光医院体检中心”场景,提供预约功能验证(如姓名、手机号、日期)。所有数据仅用于演示

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    310
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    263
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    217
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    157
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    319
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    456
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    202
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    147
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    215
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    290