0

0

css flex布局的优缺点是什么

青灯夜游

青灯夜游

发布时间:2020-12-18 14:49:29

|

9331人浏览过

|

来源于php中文网

原创

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

企站帮企业网站管理系统1.0
企站帮企业网站管理系统1.0

一、源码描述这是一款比较简单的企业管理系统源码,界面美观大方,功能简单,特别适合初学者学习研究,系统运行十分流畅,可以作为二次开发,同时也是可以帮助初学者增长知识的优秀代码。二、功能介绍主要功能:企业动态,产品介绍 ,免费下载,定制服务,该源码比较适合新手学习和二次开发使用。三、源码特点1、网站布局:采用目前最先进的布局方式DIV+CSS,符合W3C的标准和Web2.0的风格。2、程序设计模块化,

下载

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: ;}
  • 1
  • 2
  • 3

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

4.2 flex-grow属性

.item {  flex-grow: ; /* 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: ; /* 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: |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 | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
  • 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;}

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

相关专题

更多
Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

8

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

44

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

58

2026.01.15

国考成绩查询入口 国考分数公布时间2026
国考成绩查询入口 国考分数公布时间2026

笔试成绩查询入口已开通,考生可登录国家公务员局中央机关及其直属机构2026年度考试录用公务员专题网站http://bm.scs.gov.cn/pp/gkweb/core/web/ui/business/examResult/written_result.html,查询笔试成绩和合格分数线,点击“笔试成绩查询”按钮,凭借身份证及准考证进行查询。

11

2026.01.15

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

65

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

36

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

75

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

21

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

35

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

CSS教程
CSS教程

共754课时 | 19.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号