CSS 布局——flex布局
前端 CSS 学习目录导航
12. CSS 单位拓展、预处理器、移动端适配方案
当你从上帝视角看待一些知识的时候,你就会发现以前遇到过的一些问题就可以迎刃而解了,所以说,学习的时候,打开自己的格局
-
这个的话,就是我们的弹性盒模型,弹性盒模型就是一个可以随着视口的变化,产生对应的变化,这个就是我们的
flex布局-
前面我们知道了的布局的方式含有:(
掌握好专业术语名词,搜素问题都更好搜素哦)- 标准流布局(
normal flow)—— 垂直布局 - 定位流布局(
position flow)—— 层叠布局 - 浮动流布局(
float flow)—— 水平布局 - 现在的话就开始我们的弹性盒布局(
flex)了,这个的话很重要很重要,用这个来实现我们的布局,可以节省很多时间的
- 标准流布局(
-
Flex 布局前言准备知识
-
认识
Flex布局-
在前端的设计中,我们可以想象的就是,网页中的每一个部分都是看作一个盒子的,但是以前的盒子模型是无法实现拉伸的
-
现在的这个
FlexBox就是一种格外的盒子,弹性盒模型-
弹性盒模型是一种按照行或者列来实现布局的一种一维布局方案
- 所以说我们使用
flex进行布局的时候,我们是需要指定布局的方向的
- 所以说我们使用
-
这个时候元素可以实现的效果就是: 元素本身可以实现
膨胀填充额外的空间,收缩以适应更下的空间 -
使用
FlexBox进行的布局方案就是我们的flex布局(flex layout)
-
-
flex布局在web端实现开发的时候的最多的布局方案
- flex布局(
flexible 布局,弹性盒布局) - 移动端的适配性问题的解决,也是使用的
flex布局 - 在当前的PC端的开发中,大部分就是使用的
flex布局,已经很少用我们的浮动来实现布局了
- flex布局(
-
-
flex布局的重要概念-
如何实现将网页中的怕普通盒子转化为弹性盒子:
- 方法一:
display: flex, 我们的flex container是一个以block level形式存在的元素盒子 - 方法二:
display: inline-flex,这个时候,我们的flex container就是以inline-block level的元素展示
- 方法一:
-
弹性盒 和 弹性盒元素
- 开启了 flex 布局的元素(
盒子)叫做flex container - 弹性盒里面的
直接子元素就是我们的flex item, 就是我们的弹性盒的每一项
- 开启了 flex 布局的元素(
-
flex container中的flex item具备的特点flex item在flex container中的布局,是被弹性盒容器的属性进行控制和布局的flex item是不再区分块级元素和行内级元素了flex item默认情况下是包裹内容的,还是可以设置高度以及宽度的- 但是我们的我们的
flex container还是需要严格的区分块级和行内级盒子特性的
-
-
flex布局模型-
前面的描述,我们就可以知道,布局的时候,需要进行布局的时候,就需要指定布局的方向
-
在实现进行我们的flex 的布局的时候,我们是含有主轴
main axis和副轴cross axis的- 然后使用
flex实现布局的时候,默认的就是在主轴方向实现的布局,这些都是可以通过属性来控制的 - 后面的指定方向的时候,就是来改变的是主轴的方向,然后来实现的页面的布局
- 然后使用
-
同时我们的是可以设置主轴的尺寸
main size以及 主轴的开始和结束的位置main start和main end- 同时副轴也是有这些设置的
-
Flex 布局flex-container属性设置
-
控制布局主轴的属性
flex-direction-
首先我们进行
flex布局的时候,我们是需要先确定布局的主轴方向(main axis)的 -
可以实现设置的值含有:
flex-direction: row就是我们的默认的值,就是在水平方向的布局flex-direction: row-reverse这个就是实现的是我们的在主轴水平方向上的反转布局flex-direction: column这个就是实现的是主轴方向就是我们的在列进行布局的flex-direction: column-reverse这个就是实现的是在列的方向上实现反转的布局设置
-
-
控制flex布局的显示行数
flex-wrap-
注意的是我们的flex布局的时候,出现的效果就是放不下的时候,就会导致后面的压缩在一行显示,同时还是可以通过设置多行显示不出现压缩,直接保留最终的盒子具备的宽度进行在网页中的显示
-
可以实现设置的值含有:
flex-wrap: nowrap默认值,没有换行flex-wrap: wrap可以实现多行显示flex-wrap: wrap-reverse多行的逆方向显示
-
-
上面两个属性的简写属性
flex-flow-
这个属性就是
flex-direction和flex-wrap的一种简写属性 -
书写的顺序是任意的,还是省略的,随便写就行了
-
可以实现设置的值就是上面的那些值: 一共有
4*3=12种写法
-
-
justify-content属性的设置-
这个就是实现的是对我们的内容做调整,就是flex盒子中的元素的对齐方式
-
需要注意的是,
flex item里面的布局还是通过的是我们的标准流进行的布局 -
可以实现设置的值含有:(
下面的值我也记不住,都是慢慢调的,呜呜呜!!!)justify-content: flex-start默认值,就是沿着主轴方向(main start)实现依次的摆放justify-content: flex-end就是沿着主轴方向实现摆放(main end)justify-content: center就是实现的是居中对齐justify-content: space-between每一个的flex-item之间的间距是相等的,但是实现的是两端对齐justify-content: space-around每一个flex item之间的距离相等,和两端的间距是这个距离的一半justify-content: space-evenly全部的间距都相等(这个我喜欢使用)
-
-
align-items-
这个属性就是来实现设置了
flex items在副轴(cross axis)上面的单行对齐方式 -
可以实现设置的值含有:
-
align-items: normal在弹性盒中和stretch 就是一样的,但是是当我们的fledx items的高度是auto的 -
align-items: stretch在副轴上面的高度是自动的,自动实现拉伸填充满盒子 -
align-items: flex-start和cross start实现对齐 -
align-items: flex-end和cross end实现对齐 -
align-items: center实现居中对齐,开发中常设置的就是这个属性值 -
align-items: baseline实现和基准线实现对齐,通过设置字体大小,就可以改变元素的基线位置
-
-
-
align-content-
就是实现的是控制flex布局中的控制多行
flex items在副轴方向(cross items)的对齐方式, -
和
justify-content的用法是一样的,属性值设置也是一样的,但是实现的排布的话是cross axis上的
-
Flex 布局flex-items 属性设置
-
为什么还要为我们的
flex items设置属性:- 就是因为我们的
flex container为弹性盒模型,但是不代表flex items也是弹性盒模型,这个时候就需要对其单独设置
- 就是因为我们的
-
order- 这个属性就是来实现的是设置
flex布局中的flex items的显示顺序的 - 设置的值越小,那么在弹性盒中的显示的顺序就越靠前
- 这个属性就是来实现的是设置
-
align-selfauto就是实现的是将flex container中的align-items属性值的设置实现继承stretch flex-start flex-end center baseline实现的效果就是align-items一致的
-
flex-grow- 控制的是我们的
flex items的成长的属性(扩展/拉伸),但是只有当含有多余的空间的时候才分配空间 - 默认值是:
0, 这个时候就不会含有成长属性 >0,这个时候这个属性就可以生效了
- 控制的是我们的
- 还有很多的属性设置,直接看文档吧,写不下去啦!呜呜呜!!!
拓展属性: flex-basis flex-shrink- 同样的,还是可以直接书写flex的混合属性的
none || flex-grow || flex-shrink || flex-basis