搜索
首页web前端css教程css flex布局的优缺点是什么

css flex布局的优缺点是什么

Dec 18, 2020 pm 02:49 PM
cssflex布局

css flex布局的优点:flex布局容易上手,根据flex规则很容易达到某个布局效果。css flex布局的缺点:浏览器兼容性比较差,只能兼容到ie9及以上。

css flex布局的优缺点是什么

推荐:《css视频教程

1、flex布局是个什么东西?

官方说法:Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。 

民间说法:flex 就是一种布局方式,类似于 block,inline-block等。

flex 是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。

flex布局(Flexible Box)模块旨在提供一个更加有效的方式制定、调整和分布一个容器里的项目布局(基于一维),即使他们的大小是未知或者是动态的。

优点:在于其容易上手,根据flex规则很容易达到某个布局效果,

缺点:浏览器兼容性比较差,只能兼容到ie9及以上;

2、flex涉及的概念

Flex布局主要思想是让容器有能力让其子项目能够改变其宽度、高度(甚至顺序),以最佳方式填充可用空间(主要是为了适应所有类型的显示设备和屏幕大小)。Flex容器会使子项目(伸缩项目)扩展来填满可用空间,或缩小他们以防止溢出容器。

Flex的基本作用就是让布局变的更简单,比如“垂直居中”等,当然不止这个,要说清楚flex有什么作用首先要了解一些概念。 

采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。 

flex

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。 
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。 
主要记住 “容器”、“项目”、“主轴(横轴)”和“交叉轴(纵轴)”的意思和指向就行。

3,容器的属性

3.1 flex-direction

flex-direction 决定主轴的方向(即项目的排列方向)。它有4个可能的值 : 
row(默认值):主轴为水平方向,起点在容器的左端。 
row 
row-reverse:主轴为水平方向,起点在容器的右端。 
row-reverse 
column:主轴为垂直方向,起点在容器的上沿。 
column 
column-reverse:主轴为垂直方向,起点在容器的下沿。 
column-reverse

3.2 flex-wrap

默认情况下容器里变得额所有项目都排在一条线上,flex-wrap定义如果一行排不下 如何换行。它可能的值有三个: 
nowrap(默认):不换行。 
nowrap 
wrap:换行,第一行在上方。 
wrap 
wrap-reverse:换行,第一行在下方。 
wrap-reverse

3.3 flex-flow

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

3.4 justify-content 
justify-content 定义了项目在主轴上的对齐方式。它可能的值有5个: 
flex-start:向主轴的起始位置对齐,也就是从主轴的起始位置开始排列。如果使用flex-direction 属性改变的主轴的方向,那项目对应的排列方式也会变。

.container{    display: flex;    flex-direction: row;    justify-content: flex-start;}
  • 1
  • 2
  • 3
  • 4
  • 5

flex-start

.container{    display: flex;    flex-direction: row-reverse;    justify-content: flex-start;}
  • 1
  • 2
  • 3
  • 4
  • 5

flex-start 
flex-end:向主轴结束位置对齐,也就是从主轴结束的位置开始排列。和flex-start一样也和flex-direction有关。

.container{    display: flex;    flex-direction: row;    justify-content: flex-end;}
  • 1
  • 2
  • 3
  • 4
  • 5

flex-end

center: 居中

.container{    display: flex;    flex-direction: row;    justify-content: center;}
  • 1
  • 2
  • 3
  • 4
  • 5

center

space-between:如果有两个以上的项目,则容器主轴的开始和结束位置各一个,其他的项目均匀排列,项目之间的间隔相等。排列顺序同样和flex-direction有关。如果只有两个项目则一边一个。如果只有一个项目则只在容器主轴的开始位置排列 
这里写图片描述 
这里写图片描述 
这里写图片描述 
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。排列顺序同样和flex-direction有关。如果只有一个项目则排列在中间。 
这里写图片描述 
这里写图片描述 
这里写图片描述

3.5 align-items属性

align-items属性定义项目在交叉轴(纵轴)上如何对齐。它可能取5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。 
flex-start:交叉轴的起点对齐。 
这里写图片描述 
flex-end:交叉轴的终点对齐。 
这里写图片描述 
center:交叉轴的中点对齐。 
这里写图片描述 
baseline: 项目的第一行文字的基线对齐。 
这里写图片描述 
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。 
这里写图片描述

3.6 align-content属性

align-content属性定义了多根轴线(多行)的对齐方式。如果项目只有一根轴线(一行),该属性不起作用。 
如果flex-direction的值是column,则该属性定义了多列的对齐方式。如果项目只有一列,该属性不起左右。 
stretch(默认值):多行占满整个交叉轴。 
这里写图片描述 
flex-start:与交叉轴的起点对齐。 
这里写图片描述 
flex-end:与交叉轴的终点对齐。 
这里写图片描述 
center:与交叉轴的中点对齐。 
这里写图片描述 
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 
这里写图片描述 
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 
这里写图片描述

四、项目的属性

4.1 order属性

.item {  order: <integer>;}
  • 1
  • 2
  • 3

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

4.2 flex-grow属性

.item {  flex-grow: <number>; /* default 0 */}
  • 1
  • 2
  • 3
  • 4

flex-grow属性定义项目的放大比例,默认为0。 
这里写图片描述 
如果所有的item 的flex-grow的值都是一样的话那就是以item 的width为最小值平均分配主轴上的宽度。如果item没有设置width则所有的item平分主轴上的剩余宽度(多余空间)。 
如果item的flex-grow的值不一样,那就是根据对应的比例来分配主轴上的剩余宽度(多余空间)。同样是以item设置的width为最小值。 
如果item设置的max-width则放大的宽度不会超过该值。

4.3 flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item {  flex-shrink: <number>; /* default 1 */}
  • 1
  • 2
  • 3

这里写图片描述 
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。 
如果container容器设置的flex-wrap则不存在空间不足的情况,如果超过会自动换行。所以这时候设置flex-shrink也是不起作用的。 
负值对该属性无效。

4.4 flex-basis属性

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item {  flex-basis: <length>|auto; /* default auto */}
  • 1
  • 2
  • 3

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

4.5 flex属性

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

.item {  flex: none | [ <&#39;flex-grow&#39;> <&#39;flex-shrink&#39;>? || <&#39;flex-basis&#39;> ]
}
  • 1
  • 2
  • 3

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。 
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。 
如果flex-basis的总和加起来大于父级宽度,子级被压缩,最后的选择是flex-shrink来进行压缩计算

加权值 = son1 + son2 + …. + sonN;

那么压缩后的计算公式就是

压缩的宽度 w = (子元素flex-basis值 * (flex-shrink)/加权值) * 溢出值

如果flex-basis的总和小于父级宽度,剩余的宽度将根据flex-grow值的总和进行百分比;

扩张的宽度 w = (子元素flex-grow值 /所有子元素flex-grow的总和) * 剩余值

4.6 align-self属性

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

.item {  align-self: auto | flex-start | flex-end | center | baseline | stretch;}

更多编程相关知识,请访问:编程教学!!

以上是css flex布局的优缺点是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
滑动页脚滑动页脚Apr 09, 2025 am 11:50 AM

刚刚推出了一个引人入胜的新网站。标语:Big Tech正在看着您。我们正在看大型技术。上升的出色工作。这

喜欢的页面喜欢的页面Apr 09, 2025 am 11:47 AM

前几天,我发布了有关在JavaScript中解析RSS提要的内容。我还发布了有关RSS设置的信息,讨论了Feedbin的核心。

重新创建Codepen Gutenberg嵌入块以进行理智。重新创建Codepen Gutenberg嵌入块以进行理智。Apr 09, 2025 am 11:43 AM

学习如何通过Chris Coyier实施WordPress的Gutenberg编辑器来创建一个自定义Codepen块,并为Sanity Studio提供预览。

如何使用CSS制作线路图如何使用CSS制作线路图Apr 09, 2025 am 11:36 AM

线,条和饼图是仪表板的面包和黄油,是任何数据可视化工具包的基本组成部分。当然,您可以使用SVG

编程SASS创建可访问的颜色组合编程SASS创建可访问的颜色组合Apr 09, 2025 am 11:30 AM

我们一直在寻求使网络更容易访问。颜色对比只是数学,因此Sass可以帮助涵盖设计师可能错过的边缘案例。

我们如何创建一个在SVG中生成格子呢模式的静态站点我们如何创建一个在SVG中生成格子呢模式的静态站点Apr 09, 2025 am 11:29 AM

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tar​​tanify.com上,我们收集了5,000多个格子呢

PHP模板的后续行动PHP模板的后续行动Apr 09, 2025 am 11:14 AM

不久前,我仅以PHP(基本上是Heredoc语法)发布了有关PHP模板的信息。我从字面上使用该技术来进行某种超级基础

使用Bootstrap组件创建模态图像库使用Bootstrap组件创建模态图像库Apr 09, 2025 am 11:10 AM

您是否曾经在网页上单击图像,该图像通过导航打开图像的较大版本以查看其他照片?

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。