本文由云+社区发表

Flex是Flexible Box 的缩写,意为"弹性布局",是CSS3的一种布局模式。通过Flex布局,可以很优雅地解决很多CSS布局的问题。下面会分别介绍容器的6个属性和项目的6个属性。每个属性会附上效果图,具体实现代码会以github路径形式更新于此。

1.浏览器支持情况

可以点击查看各浏览器的兼容情况

2.容器的属性

注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

容器的属性有6个,分别是:

flex-direction

flex-wrap

flex-flow

justify-content

align-items

align-content

(1)flex-direcion属性:

作用:控制主轴的方向

flex-direction: row | row-reverse | column | column-reverse;

默认值:row

(2)flex-wrap属性:

作用:默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

flex-wrap: nowrap | wrap | wrap-reverse;

默认值:nowrap

(3)flex-flow属性

作用:该属性是flex-direction属性和flex-wrap属性的简写形式

默认值:row nowrap

(4)justify-content属性

作用:定义项目在主轴上的对齐方式

justify-content: flex-start | flex-end | center | space-between | space-around;

默认值:flex-start

(5)align-items属性

作用:定义项目在交叉轴上如何对齐。

align-items: flex-start | flex-end | center | baseline | stretch

默认值:flex-start

注意:如果align-items为stretch,想看到每个flex-item铺满整个交叉轴的话,需要设置所有的flex-item的高度:height:auto,否则达不到效果。

(6)align-content属性

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

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

默认值:stretch

flex-start:与交叉轴的起点对齐。

flex-end:与交叉轴的终点对齐。

center:与交叉轴的中点对齐。

space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

stretch:轴线占满整个交叉轴。

3.项目的属性

项目的属性有6个,分别是:

order

flex-grow

flex-shrink

flex-basis

flex

align-self

(1)order属性:

作用:定义项目的排列顺序,数值越小,排列越靠前。

默认值:0

(2)flex-grow属性

作用:如果存在剩余空间,项目放大的比例。相当于是各个项目根据这个比例,来分配剩余空间。

默认值:0(不放大)

(3)flex-shrink属性

作用:flex-shrink:如果存在空间不足,项目的“缩小比例”。0表示当空间不足时,不缩小。

默认值:1

负值对该属性无效

(4)flex-basis属性

作用:定义项目在主轴方向上占据空间大小的初值。

默认值:auto(项目本来的大小)

(5)flex属性

作用:是flex-grow、flex-shrink、flex-basis属性的缩写形式;

flex: none | [<'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

注:几种常见缩写形式;

flex: auto; === flex: 1 1 auto;

flex: none; === flex: 0 0 auto;

flex: initial; === flex: 0 1 auto;

flex: ; === flex: 1 auto;

flex: 1; === flex: 1 1 auto;

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值

(6)align-self属性

作用:属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。

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

默认值:auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

4.小结

本文分别介绍了容器的6个属性和flex-item项目的6个属性。建议跟着demo整体做一遍,有助于加深理解。如有问题,欢迎指正。

此文已由作者授权腾讯云+社区发布


详解CSS的Flex布局的更多相关文章

  1. 详解CSS float属性

    CSS中的float属性是一个频繁用到的属性,对于初学者来说,如果没有理解好浮动的意义和表现出来的特性,在使用的使用很容易陷入困惑,云里雾里,搞不清楚状态.本文将从最基本的知识开始说起,谈谈关于浮动的 ...

  2. CSS的flex布局(转载)

    我们之前已经学过一些布局模型,比如说浮动,绝对定位等等,但是这些布局方式一是不够简洁,而是使用的范围确实是太窄了. flex模型拥有比较多的属性,来设置多样的布局方式,接下来我们就详细介绍各种属性对布 ...

  3. 详解CSS display:inline-block的应用(转)

    详解CSS display:inline-block的应用   阅读目录 基础知识 inline-block的问题 inline-block的应用 总结 本文详细描述了display:inline-b ...

  4. 详解CSS float属性(转)

    详解CSS float属性   阅读目录 基础知识 float的详细细节 float特殊情况 clear属性 清除浮动 float的应用 总结 CSS中的float属性是一个频繁用到的属性,对于初学者 ...

  5. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    [Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.And ...

  6. CSS学习笔记(9)--详解CSS中:nth-child的用法

    详解CSS中:nth-child的用法 前端的哥们想必都接触过css中一个神奇的玩意,可以轻松选取你想要的标签并给与修改添加样式,是不是很给力,它就是“:nth-child”. 下面我将用几个典型的实 ...

  7. 详解CSS的相对定位和绝对定位(讲得很详细)

    详解CSS的相对定位和绝对定位 CSS的相对定位和绝对定位通常情况下,我们元素的position属性的值默认为static 就是没有定位,元素出现在正常的文档流中,,这个时候你给这个元素设置的left ...

  8. 详解CSS盒模型(转)

    详解CSS盒模型   阅读目录 一些基本概念 盒模型 原文地址:http://luopq.com/2015/10/26/CSS-Box-Model/ 本文主要是学习CSS盒模型的笔记,总结了一些基本概 ...

  9. css的flex布局调试

    学习经验-css的flex布局 今天遇到一个小问题 在给三个div布局时,设置父元素display:flex 此时三个div的宽度均为50%,他们并没有超出屏幕的宽度,还是撑满了父元素. 为什么呢? ...

随机推荐

  1. Git使用(一、TortoiseGit和Gitlab在Windows下的项目库创建和上传)

    介绍使用TortoiseGit初次创建并上传到gitlab项目库,转载请注明出处. 一.需要先安装git环境,并配置Git用户名及邮箱. 二.用PuTTYgen生成公约私钥对(鼠标画画).PuTTYg ...

  2. go 函数类型

    在go中,函数也可以被当成数据类型 e.g:下面有两个函数,+.-,然后定义了一个函数类型FuncType1,然后对funcType1附于不同的函数,则funcType1就可以执行相应的函数 pack ...

  3. 深入浅出Git教程【转载】转载

    深入浅出Git教程(转载)   目录 一.版本控制概要 1.1.什么是版本控制 1.2.常用术语 1.3.常见的版本控制器 1.4.版本控制分类 1.4.1.本地版本控制 1.4.2.集中版本控制 1 ...

  4. ExtJS中listener方法和handler方法的区别

    listener方法和handler方法的区别在文档中的说明的太玄乎了,看不懂 listeners监听能够对一个click Event事件添加任意多个的事件响应处理函数 而handler处理只能够通过 ...

  5. sudo -iu [用户] 命令无法正常切换到用户目录的原因

    今天干活时遇到一个问题,在sudo -iu [用户]命令执行后无法切换到用户对应的[ 用户@机器 ~$ ]命令行 .bashrc已正常配置为 if [ -f /etc/bashrc ]; then . ...

  6. Equal 路由类

    1.Route 原型 class Route { /* 获取请求路径和查询字符串 */ /* 获取模块.控制器.动作名称 */ /* 获取 URI 参数 */ }

  7. 原生AJAX(包括Fetch)

    一.INTRO AJAX即“Asynchronous Javascript And XML” 一.Ajax的原生初级 1.1 Ajax对象创建:var xhr= new XMLHttpRequest( ...

  8. idea 新建项目上传至git(coding)

    一.新建项目 1.改为git版本 2.出现如下框 选择Git 3.新建一个.gitignore file (Git) 4.勾掉一些不需要的 5.出现如下框 5.1.如果不知道.gitignore fi ...

  9. poj3660 cow contest

    这题主要是传递闭包 题意: n头牛,m次测试,假设a牛赢过b牛,那么说明a牛的能力比b牛强,问你根据输入的m次测试结果,最多能确定多少条牛的排名 大题的思路: 对于 k 牛,比他强的有x头牛,比他弱的 ...

  10. Android中屏幕保持唤醒

    1.锁的类型 PowerManager中各种锁的类型对CPU .屏幕.键盘的影响: PARTIAL_WAKE_LOCK : 保持CPU 运转,屏幕和键盘灯有可能是关闭的. SCREEN_DIM_WAK ...