学习flex基础用法,这篇就够啦

9 篇文章 1 订阅
订阅专栏

flex布局是目前常用的一种布局方式,这篇文章主要对flex的常用基础知识做一个整理。

1、flex简介

flex布局是一种一维布局( 网格布局则是一种二维布局)。这种布局主要作用于父级容器,通过控制父级容器的排列规则来达到需要的效果。任何一个元素都可以使用flex布局,只要给元素添加display: flex;即可。我们把添加了display: flex;的元素称为容器,元素内部的子元素称为项目

在这里插入图片描述
从上图我们可以看出,flex布局的容器默认存在两条轴(主轴侧轴),我们的布局就基于这两条轴。我们可以简单的理解为x轴y轴。这时有人可能会有疑问,既然有两个方向,为什么要叫一维布局而不是二维布局呢?我的理解是这样:虽然我们可以在两个方向对元素进行排列,达到类似二维的效果,但事实上仅仅使用flex布局并不能够精确的定位到二维平面的所有位置( 网格布局可以,它是目前最强大的css布局方法),它是主要控制主轴上的排列,然后在侧轴上进行调整。接下来就这两条轴分别介绍flex布局的用法。

2、主轴上的设置

flex布局在主轴上会让子元素默认排成一行,此时的子元素具有行内块元素的性质。如果设置了每个子元素的宽度,当父级元素宽度足够时正常显示,如果父级元素宽度不够,则每个子元素的宽度会按比例压缩,充满整个父级元素。

如下:

<div class="container">
 <div class="items">1</div>
 <div class="items">2</div>
 <div class="items">3</div>
 <div class="items">4</div>
 <div class="items">5</div>
</div>
.container {
  display: flex;
  width: 400px;
  border: 1px solid #000;
}

.items {
  width: 100px;
  height: 100px;
  background-color: pink;
}

.items:last-child {
  width: 300px;
}

在这里插入图片描述
(前4子元素宽度为57.14px,最后一个子元素宽度为171.42px,可以看出它们按比例缩放了)

由于flex布局默认显示在一行,因此如果我们想要它换行显示,则需要使用flex-wrap属性进行控制。它有3个值:

属性作用
nowrap不换行(默认值)
wrap超出父级元素宽度时换行显示,第一行在上方
wrap-reverse超出父级元素宽度时换行显示,第一行在下方
flex-wrap: wrap;

在这里插入图片描述
(父级元素宽度不够,换行显示,第一行在上面)

flex-wrap: wrap-reverse;

在这里插入图片描述
(父级元素宽度不够,换行显示,第一行在下面)

在主轴上,我们通常通过justify-content来控制子元素的排列方式,它有以下几个值:

属性作用
flex-start子元素左对齐(默认值)
flex-end子元素右对齐
center子元素居中排列
space-around每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
space-between两端对齐,项目之间的间隔都相等
justify-content: flex-start;

在这里插入图片描述

justify-content: flex-end;

在这里插入图片描述

justify-content: center;

在这里插入图片描述

justify-content: space-around;

在这里插入图片描述

justify-content: space-between;

在这里插入图片描述

2、侧轴上的设置

侧轴上主要由alitn-itemsalign-content进行设置。其中align-items只针对单行,即在侧轴方向上只有一行,如果有多行则需要使用align-content
align-items有如下值:

属性作用
flex-start侧轴方向上从上向下排列
flex-end侧轴方向上从下向上排列
center侧轴方向上居中排列
stretch侧轴方向上拉伸撑满整个父盒子高度(只在子盒子未设置高度时或高度设为auto时生效)(默认值)
baseline项目的第一行文字的基线对齐。
align-items: flex-start;

在这里插入图片描述

align-items: flex-end;

在这里插入图片描述

align-items: center;

在这里插入图片描述

align-items: strench;

在这里插入图片描述

align-items: baseline;

在这里插入图片描述
align-content有如下值:

属性作用
flex-start侧轴方向上靠上方排列
flex-end侧轴方向上靠下方排列
flex-center侧轴方向上居中排列
stretch侧轴方向上拉伸撑满整个父盒子高度(只在子盒子未设置高度时或高度设为auto时生效)(默认值)
space-around每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
space-between两端对齐,项目之间的间隔都相等
align-content: flex-start;

在这里插入图片描述

align-content: flex-end;

在这里插入图片描述

align-content: center;

在这里插入图片描述

align-content: stretch;

在这里插入图片描述

align-content: space-around;

在这里插入图片描述

align-content: space-between;

在这里插入图片描述

4、其余部分

上面我们介绍了怎样在主轴和侧轴上控制元素的排列方式(注意:这些样式都是添加在父级元素上的,即添加了display: flex;的元素),但是仅仅这样是不够的,一些情况需要对子元素做特殊处理,还有一些情况需要调换主轴和侧轴(默认情况下主轴从左指向右,侧轴从上指到下)。还有时候我们也需要控制子元素的排列方式。这时我们就需要知道下面的这些属性。

  • flex-direction设置主轴方向
  • align-self 对某个子元素单独设置排列方式
  • order 控制子元素的排列顺序
  • flex-grow 定义子元素的放大比例
  • flex-shrink 定义了子元素的缩小比例
  • flex-basis 定义了在分配多余空间之前,子元素占据的主轴空间

flex-direction有以下值:

属性作用
row主轴方向设为x轴方向,起点在左边(默认)
row-reverse主轴方向设为x轴方向,起点在右边
column主轴方向设为y轴方向,起点在左边
column-reverse主轴方向设为y轴方向,起点在右边
flex-direction: row;

在这里插入图片描述

flex-direction: row-reverse;

在这里插入图片描述

flex-direction: column;

在这里插入图片描述

flex-direction: column-reverse;

在这里插入图片描述
有时候我们需要同时设置主轴方向和换行显示,这时可以使用flex-flow,它是一种简写形式。如下:

flex-flow: column wrap;

上面代码设置了主轴方向为y轴,并且换行显示。


上面的所有设置都在父级元素上,下面的则是设置在子元素上。

align-self有如下值,它设置在某一个子元素上,覆盖父元素的样式,单独控制这个子元素的样式:

属性作用
auto继承父元素的align-items(默认)
flex-start与align-items效果相同
flex-end与align-items效果相同
center与align-items效果相同
stretch与align-items效果相同
baseline与align-items效果相同

例如,在第2个子元素上设置如下样式:

align-self: flex-end;

在这里插入图片描述
order可以控制主轴上子元素的排列顺序,每个子元素的order默认为0。例如给最后一个子元素的order设置为-1

order: -1;

在这里插入图片描述
从上面可以看出,order越小排列越靠前。这里很多人会将orderz-index混淆,z-index越大越靠近用户,小的则被大的遮挡。事实上orderz-index是同一回事,看看下面这张图就明白了。
在这里插入图片描述
flex布局默认主轴为x轴order事实上就相当于x轴上的坐标,order越小自然在x轴上越靠前。主轴为y轴时同理。而定位实际相当于ps里面的图层,对应的是z轴,如下:
在这里插入图片描述
如上图,num1小于num2,则对应的元素排在后面。这就解释了为什么z-index越大越靠前。

flex-grow用于控制主轴上子元素的放大比例。默认为0,即元素的本来宽度。如果flex-grow设为1,则子元素会撑满剩余宽度。如下:
在这里插入图片描述
上图前5个元素设置了固定宽度,第6个元素没有设置宽度,但是flex-grow为1,因此撑满了剩余的宽度。如果有多个元素设置了flex-grow,则按比例平分剩余宽度(父级宽度减去所有设置了固定宽度的元素),此时宽度计算公式如下:

元素宽度 = 元素本身宽度 + 按比例平分父级元素剩余宽度后得到的宽度

上面的公式只适用于父级元素宽度足够的情况。

flex-shrink用于控制主轴上子元素的缩小比例。默认为1,即如果父元素宽度不够则子元素等比例缩小。如果其中一个设为0,则这个子元素不缩放。
在这里插入图片描述
上图元素等比例缩放。如果将第二个元素flex-shrink设为0,则如下:
在这里插入图片描述
等比例缩小时最多变回原来大小,即不缩放时候的大小(也就是下面要讲的flex-basis的大小)。如下:
在这里插入图片描述
flex-basis表示在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即子元素的本来大小。如下:
在这里插入图片描述
上图两个元素宽度都为100px,父盒子宽度为200px,但是第一个元素的flex-basis为150px,因此第二个元素被缩小了。此时第一个元素的flex-basis为150px,第二个元素为100px,浏览器根据这两个值进行等比例缩小,则计算后第一个盒子宽度为120px,第二个盒子宽度为80px。
上面的三个样式如果每次都要一个个写过于麻烦,此时可以使用简写形式:

flex: flex-grow flex-shrink flex-basis;

其中flex-grow必须写,后两个可以省略,省略后取默认值。因此flex: 1;相当于flex: 1 1 auto;通常我们都只用这种简写形式。flex属性有两个快捷值: flex: auto;相当于flex: 1;flex: none;相当于flex: 0 0 auto;

以上。

参考链接

[1] 阮一峰-Flex布局教程

女朋友要我教她CSS,我就写了这一篇长文,感动哭了?
超逸の学习技术博客
05-30 9649
女朋友她又要我教她CSS,这4w字长文了吗?她会被感动到吗?
带你由浅入深的了解 flex基础用法
原地起飞
08-24 2020
文章目录传统布局与flex布局的区别一、体验 flex 布局二、flex 布局父项常见元素1.flex-direction 设置主轴的方向2.justify-content 设置主轴上的元素排列方式3.flex-wrap 设置子元素是否换行4.align-items 设置侧轴上的子元素排列方式(单行)5.align-content 设置侧轴上的子元素排列方式(多行)6.algin-content和algin-items的区别三、flex 布局子项常见元素1. flex: number;2.flex-basi
flex各种用法
Just Code
01-19 177
小结   //获得屏幕的分辨率 var x:Number=Capabilities.screenResolutionX; var y:Number=Capabilities.screenResolutionY; Alert.show("x="+x+"y="+y); //第二种方法 Alert.show(stage.fullScreenWidth+"=="+stage.fullScre...
Flex布局(弹性布局)
最新发布
ORANGE_3iING的博客
08-10 3900
通过给父盒子添加flex属性,来控制子盒子的位置和排列方式对父容器设置的属性作用属性值设置主轴的方向row 默认值从左到右row-reverse 从右到左column 从上到下column-reverse 从下到上设置主轴上的子元素排列方式> 注意:使用这个属性之前一定要确定好主轴是哪个flex-start:默认值,从头部开始,如果主轴是x轴,则从左到右flex-end:从尾部开始排列center:在主轴居中对齐(如果主轴是x轴则水平居中)space-around:平分剩余空间。
flex的使用方法
wing_1989的博客
06-24 2572
flex盒子的使用
flex简单用法
Yugoup的博客
06-10 645
flex的容器属性 flex-flow flex-direction flex-wrap justify-content align-items align-content flex元素属性 order flex-grow flex-shrink flex-basis flex align-self 1.弹性盒模型 只要加上display:flex ,就成了弹性盒子,这个元素就成为了弹性容...
使用FLEX的教程
虫二的专栏~~在路上~~~
03-23 1778
比较好的教程:http://help.adobe.com/zh_CN/AIR/1.5/devappsflex/devappsflex.pdf  
学习 HTML+CSS 这一篇就
li520_fei的博客
03-17 2895
文章目录学习 HTML+CSS 这一篇就了 !HTML 简介一、网页1 .什么是网页2. 什么是 HTML3.网页的形成4.网页总结二、浏览器1. 常用浏览器2.浏览器内核三、 Web 标准(重点)1. 为什么需要 Web 标准2. Web 标准的构成HTML标签一、HTML 语法规范1. 基本语法概述2.标签关系二、HTML 基本结构标签1. 第一个 HTML2. 基本结构标签总结三、开发工具1. 网页开发工具2. VSCode 工具生成骨架标签新增代码4.1 文档类型声明标签4.2 lang 语言种
2021前端面经-看这篇了(笔者靠这个拿到阿里和字节的offer)
爱前端也爱恋爱
04-30 1862
面试题梳理 梳理前端常见面试题及答案。 一、web 前端性能优化 性能评级工具(PageSpeed 或 YSlow) css CSS优化、提高性能的方法有哪些 多个css合并,尽量减少HTTP请求 将css文件放在页面最上面 移除空的css规则 避免使用CSS表达式 选择器优化嵌套,尽量避免层级过深 充分利用css继承属性,减少代码量 抽象提取公共样式,减少代码量 属性值为0时,不加单位 属性值为小
app安卓开发!美团Android开发工程师岗位职能要求,看这一篇就了!
chayel123的博客
02-25 453
Android开发的现状 目前,移动开发已经处于饱和的阶段,Android开发也不如当年盛况,已经不再像前几年前那么火爆。正如一种编程语言如果经历过盛极一时,那么必然有这样的一条曲线,像我们学的正弦曲线先急速上升,然后到达顶点,然后再下降,最后再趋近一个平稳的值。 可以看到,从2016年的下半年开始,移动互联网基本处于缓慢发展的阶段,很多大佬称之为互联网的下半场。如果移动互联网的前半场是粗放式的强地盘阶段,那么下半场就是守地盘的阶段,这一阶段,会出现众多的寡头。 在技术上,相比之前之前面试只问Androi.
学习编程时真正值得一读的一篇文章 与 书籍
razorEdge的博客
12-20 431
Teach Yourself Programming in Ten Years 彼得·诺维格(Peter Norvig)是美国计算机科学家。他是Google,LLC的研究总监,并曾担任Google搜索质量总监。他也是美国人工智能促进协会(AAAI)的会员和委员,与斯图尔特·罗素(Stuart Russell)共同撰写了《人工智能:现代方法》,目前是该领域的领先大学教材。他曾是NASA Ames研究中心计算科学部(现为智能系统部)的负责人。 本文是他非常有名的一篇文章,也是业界公认的神文,相信大家可以从中得
flex教程(各种flex教程集合)
05-25
各种flex教程集合,欢迎下载! 各种flex教程集合,欢迎下载!
Flex简易教程
前端小记
05-24 604
CSS 弹性盒子布局(Flex 布局)是 CSS 的模块之一,用来快速建立二维自适应布局。本文重点介绍该布局的基本语法、兼容性写法以及典型实现。
个人总结flex各种用法【经典】
xuhuanchao的专栏
10-30 5114
//获得屏幕的分辨率var x:Number=Capabilities.screenResolutionX;var y:Number=Capabilities.screenResolutionY;Alert.show("x="+x+"y="+y);第二种方法Alert.show(stage.fullScreenWidth+"=="+stage.fullScreenHeigh
Macromedia Flex 教程: Flex入门
weixin_30254435的博客
07-21 171
创建第一个Flex应用程序 作者:Robert Crooks (Macromedia培训小组)翻译:MoonFun.qhwa 轉載請註明來自藍色理想 在本教程中,你可以阅读到Flex的简单介绍,还可以利用MXML创建一个简单的分类购物车,从而学习到Macromedia Flex应用程序的基本构成。你将会学到:创建一个应用程序、添加一个布局的容器、添加控件、创建与控件关联的简单数据模型,以及利...
Flex使用指南
m0_60264901的博客
09-29 1237
快来快来,这个博主终于更博啦~ 一、Flex布局 原理:给父盒子添加flex属性,来控制子盒子的位置和排列方式 特点: a.一旦给父元素添加了display:flex;这个属性后子元素将不区分行内元素和块元素,此时的子元素就能自定义宽度和高度 b.任何元素均可用flex布局,可以理解为父盒子对子元素“一视同仁” c.不需要清除浮动,因此此时float、clear、vertical-align等属性失效 二、Flex属性 1.父项常见属性 先给大家看一下我整理的 2.子项常见属性 代码如下(示例):
Flex的使用
Whuiry的博客
08-11 255
主要是总结了一下Flex的各个属性,有些例子可能不大能实现,当时瞎写的,还是先来看看大神的笔记吧: 阮一峰:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 01 Flex的定义和使用 1.FlexFlexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性; 2.任何一个容器都可以指定为 Flex 布局。 3.采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。 它的所有
总结flex各种用法
Jason's Word
11-25 2539
 //获得屏幕的分辨率 var x:Number=Capabilities.screenResolutionX; var y:Number=Capabilities.screenResolutionY; Alert.show("x="+x+"y="+y); 第二种方法 Alert.show(stage.fullScreenWidth+"=="+stage
Flex开发入门教程:从零开始学习Flex基础
教程旨在为后续深入学习Flex打下基础,适合有一定Web编程和Eclipse/Firefox使用经验的读者。" 在Flex开发入门中,首先需要理解Flex作为一种富互联网应用(RIA)技术,自Adobe开源以来,其发展迅速,并在众多企业中...
写文章

热门文章

  • 关于colgroup和col标签的介绍,使用其达到固定表头的效果 8986
  • css中的渐变色 8330
  • 关于html中文字空格以及换行符的处理 6184
  • Vue源码学习1--获取源码和查找入口文件 3374
  • vue使用render函数和template模板的渲染对比 3196

分类专栏

  • 构建工具 5篇
  • css 9篇
  • 前端 8篇
  • Vue 6篇
  • JavaScript 13篇
  • bug集锦 1篇
  • 笔记
  • 博文写作 1篇
  • html

最新评论

  • css中的渐变色

    Deep Learning小舟: 谢谢分享!( ̄ˇ ̄)

大家在看

  • 在企业开发中的并行计算与异步UI更新方式
  • 题目:MATLAB数字验证码提取和识别 1022
  • 39. 本地坐标和世界坐标
  • 基于字符的图片验证码识别算法的设计与实现 1344
  • 【开题报告】基于Springboot+vue教学视频平台(程序+源码+论文) 计算机毕业设计

最新文章

  • Git详解
  • sass的基本语法整理
  • 怎样去掉vscode中因为无法识别flow语法出现的红线
2022年1篇
2021年37篇
2020年3篇
2019年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家党建文化玻璃钢人物雕塑费用滁州卡通玻璃钢雕塑订做太原佛像玻璃钢雕塑定制河池玻璃钢雕塑特点通道商场美陈研发公司商场开业主题美陈商场花卉美陈摩托车玻璃钢雕塑昌邑玻璃钢浮雕人物山水雕塑钦州玻璃钢塑料雕塑漳州玻璃钢卡通雕塑玻璃钢雕塑关公神像焦作玻璃钢花盆花器开业商场美陈费用青岛玻璃钢雕塑制作公司玻璃钢动物牛雕塑咨询电话青海玻璃钢雕塑方案品牌大型玻璃钢雕塑长春玻璃钢雕塑地址深圳玻璃钢卡通雕塑游乐场道具莱阳玻璃钢胸像雕塑杭州玻璃钢雕塑制作玻璃钢广场雕塑设计公司哪家好商场模特美陈佛山玻璃钢雕塑尺寸曲阳玻璃钢雪宝雕塑上海城市景观雕塑玻璃钢天津花钵玻璃钢雕塑定制石家庄玻璃钢雕塑鹿鲁山玻璃钢雕塑定制香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化