Flex布局

1.Flex为"Flexible Box"的简称,即为弹性布局,可作用于任何容器上。给div这类块状元素元素设置display:flex或者给span这类内联元素设置display:inline-flex,flex布局即创建!

其中,直接设置display:flex或者display:inline-flex的元素称为flex容器,里面的子元素称为flex子项。

(flex和inline-flex区别在于,inline-flex容器为inline特性,因此可以和图片文字一行显示;flex容器保持块状特性,宽度默认100%,不和内联元素一行显示。)

2.Flex布局的属性分为两种,即作用域容器上和作用于flex子项上:

作用在flex容器上
作用在flex子项上
  • flex-direction
  • flex-wrap  
  • flex-flow
  • justify-content
  • align-items
  • align-content
  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

无论作用在flex容器上,还是作用在flex子项,都是控制的flex子项的呈现,只是前者控制的是整体,后者控制的是个体。

子元素的floatclearvertical-align属性将失效。

作用在flex容器上的CSS属性

1. flex-direction :决定主轴的方向(即项目的排列方向)语法如下:

flex-direction: row | row-reverse | column | column-reverse;
  • row:默认值,显示为行。方向为当前文档水平流方向,默认情况下是从左往右。如果当前水平文档流方向是rtl(如设置direction:rtl),则从右往左。
  • row-reverse:显示为行。但方向和row属性值是反的。
  • column:显示为列。
  • column-reverse:显示为列。但方向和column属性值是反的。

2.flex-warp:用来控制子项整体单行显示还是换行显示,如果换行,则下面一行是否反方向显示。

flex-warp: nowarp | warp | warp-reserve;
  • nowarp:默认值,表示单行显示,不换行。
  • warp:宽度不足换行显示。
  • warp-reserve:宽度不足换行显示,但是是从下往上开始,也就是原本换行在下面的子项现在跑到上面。

3.flex-flow:属性是flex-directionflex-wrap的缩写,表示flex布局的flow流动特性,语法如下:

flex-flow: (flex-direction) || (flex-warp);

当多属性同时使用的时候,使用空格分隔。

4.justify-contet:属性决定了主轴方向的子项的对齐和分布方式。

justify-contet: flex-start | flex-end | center | space-between | space-around | space-evenly;
  • flex-start:默认值。与文档流方向相关。默认表现为左对齐。
  • flex-end:与文档流方向相反,默认表现为从右向左。
  • center:表现为居中对齐。
  • space-between:表现为两端对齐,多余的空白间距只在元素中间区域分配。
  • space-around:表现为每个flex子项两侧都环绕互不干扰的等宽的空白间距,最终视觉上边缘两侧的空白只有中间空白宽度一半。
  • space-evenly:表现为每个flex子项之间的两侧空白间距完全相等。

5.align-items:属性决定了交叉轴方向的子项的对齐和分布方式

align-items: stretch | flex-start | flex-end | center | baseline;
  • stretch:(默认值)flex子项拉伸。如果未设置高度或设为auto,将占满整个容器的高度。
  • flex-start:与文档流方向相关。默认表现为容器顶部对齐。
  • flex-end:与文档流方向相关,默认表现为容器底部对齐。
  • center:表现为与主轴垂直居中对齐。
  • baseline:表现为所有flex子项都相对于flex容器的第一行文字基线对齐。

6.align-content:属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

align-content: stretch | flex-start | flex-end | center | space-between | space-around | space-evenly;

作用在flex子项上的CSS属性

1. order:可以通过设置order改变某一个flex子项的排序位置。(order越小顺序越靠前)

order:integer; (整数值,默认为 0)
 

2.flex-grow:属性定义项目的放大比例,默认为0;扩展的就是flex子项所占据的宽度,扩展所侵占的空间就是除去元素外的剩余的空白间隙。

flex-grow:number; (默认为 0

3.flex-shrink:属性定义了项目的缩小比例,默认为1;shrink是“收缩”的意思,flex-shrink主要处理当flex容器空间不足时候,单个元素的收缩比例。

flex-shrink:number; (数值,默认为 1)

例子:现在只给第2个flex子项b元素设置flex:shrink

  • 默认为1;则3个子项1:1:1收缩
  • 如果为0,则该子项不收缩,按原定大小显示;则b不收缩,剩下2个flex子项等比例收缩;
  • 如果为2,则完全收缩尺寸比例分配为1:2:1,b子项收缩的宽度b最大,是其他元素的2倍。

4.flex-basis:定义了在分配剩余空间之前元素的默认大小。(它可以设为跟widthheight属性一样的值(比如100px),则项目将占据固定空间。)

flex-basisi:<length> | auto; (数值,默认为auto)
 
  • 默认值是auto,就是自动。有设置width则占据空间就是width,没有设置就按内容宽度来。
  • 如果同时设置widthflex-basis,就渲染表现来看,会忽略width。以下例子设置width:100px, flex-basis:150px;最终显示为150px;
  • 选择最后一个flex-basis:240px会发现flex子项的宽度并不是240px,因为此时剩余空间不足,3个子项1:1:1收缩的缘故。

5.flex:属性是flex-growflex-shrinkflex-basis的缩写。(默认值为 0 1 auto)

flex: none | auto | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] 
其中第2和第3个参数(flex-shrink和flex-basis)是可选的。默认值为0 1 auto。

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

6.align-self:指控制单独某一个flex子项的垂直对齐方式,写在flex容器上的这个align-items属性,后面是items,有个s,表示子项们,是全体;这里是self,单独一个个体。其他区别不大,语法几乎一样。

align-self: auto | flex-start | flex-end | center | baseline | stretch;

唯一区别就是align-self多了个auto(默认值),表示继承自flex容器的align-items属性值。其他属性值含义一模一样。

参考来自:Flex布局教程:语法篇 ;

       写给自己看的display:flex布局教程;

关于基本布局之——Flex布局的更多相关文章

  1. 弹性布局(Flex布局)整理

    一.  弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...

  2. 前端(八)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

    高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 ...

  3. cdispaly的Grid布局与Flex布局

    cdispaly的Grid布局与Flex布局 Gird 布局与 Flex 布局有一定的相似性,都是对容器的内部项目进行划分. Flex 布局是轴线布局,只能指定项目针对轴线的位置,可以看作成一维布局 ...

  4. css3弹性伸缩布局(一)—————flex布局

    CSS3弹性伸缩布局简介 2009年,W3C提出了一种崭新的方案—-Flex布局(即弹性伸缩布局),它可以简便.完整.响应式地实现各种页面布局,包括一直让人很头疼的垂直水平居中也变得很简单地就迎刃而解 ...

  5. CSS布局之Flex布局

    Flex布局,可以简便.完整.响应式地实现各种页面布局. 浏览器支持:得到所有浏览器的支持.(注:Flex布局将成为未来布局的首选方案)   一. Flex布局的概念 Flex是Flexible Bo ...

  6. 布局方式-flex布局

    .弹性盒子 .盒子本来就是并列的 .指定宽度即可 <style> .container { width: 800px; height: 200px; display: flex; bord ...

  7. CSS3系列:流式(弹性)布局(flex布局)

    我的新伸缩盒子.http://www.cnblogs.com/leee/p/5533436.html

  8. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  9. 微信小程序开发:Flex布局

    微信小程序页面布局方式采用的是Flex布局.Flex布局,是W3c在2009年提出的一种新的方案,可以简便,完整,响应式的实现各种页面布局.Flex布局提供了元素在容器中的对齐,方向以及顺序,甚至他们 ...

随机推荐

  1. T-SQL代码搜索

    SET ANSI_NULLS ON; SET ANSI_PADDING ON; SET ANSI_WARNINGS ON; SET CONCAT_NULL_YIELDS_NULL ON; SET NU ...

  2. 空气质量管理系统ssm(mybatis+spring+springMVC)框架+前后端分离

    1.目录结构: 2.需要注意的地方 2.1在WEB-INFO下新建 2.1.1 springMVC-servlet.xml <?xml version="1.0" encod ...

  3. PAC 代理自动发现简介

    一 简介 1.1 什么是PAC文件 代理自动配置(PAC)文件包含一组用javaScript编码的规则,允许web浏览器确定是将Web流量直接发送到Internet还是通过代理服务器发送        ...

  4. 精选腾讯技术干货200+篇,云加社区全年沙龙PPT免费下载!

    2019年已经过去,小编为大家整理了这一年以来云加社区发布的 200多篇腾讯干货,点击文章标题即可跳转到原文,请速速收藏哦~ 看腾讯技术: 腾讯成本优化黑科技:整机CPU利用率最高提升至90%: 腾讯 ...

  5. 机器学习-Pandas 知识点汇总(吐血整理)

    Pandas是一款适用很广的数据处理的组件,如果将来从事机械学习或者数据分析方面的工作,咱们估计70%的时间都是在跟这个框架打交道.那大家可能就有疑问了,心想这个破玩意儿值得花70%的时间吗?咱不是还 ...

  6. Java江湖之设计模式

    Java江湖之设计模式 ps:最近在学习设计模式,感觉这个是个装逼神器呀,就跟武功一样.     某日,senior同学看见rookie同学在练功.     问,"你练得什么武功?" ...

  7. Linux 下解压.tar.gz文件报错 gzip:stdin:not in gzip format 的解决办法!

    [root@hzp124 opt]# tar xzvf 1577255462-qypt.tar gzip: stdin: not in gzip formattar: Child returned s ...

  8. TVP思享 | 四个全新维度,极限优化HTTP性能

    导语 | 当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议.那么,要想极限优化HTTP性能,应该从哪些维度出发呢?本文将由TVP陶辉老师,为大家分享四个全新维度.「TVP思享」专栏,凝结大咖思 ...

  9. JUC 中的 Atomic 原子类总结

    1 Atomic 原子类介绍 Atomic 翻译成中文是原子的意思.在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的.在我们这里 Atomic 是指一个操作是不可中断的.即使是 ...

  10. 迷你PS小程序-集成的开放式画报、油墨电子签名、图片拖拽可单独食用

    米娜桑,哦哈哟~ 个人制作,该文章主要讲解最近基于uni-app框架编写的集图文拖拽等多方位编辑.油墨电子签名.开放式海报于一体的小程序的制作思路和实现代码. 目录 1.完整源码链接 2.实现思路 3 ...