实习以来做了三个小控件,都是用的CSS2.1里传统的DIV+CSS布局方式,综合使用position、margin、float、BFC等属性或特性将元素放到指定的位置上。然而面对日益复杂的界面,这些来自于上个时代、主要针对普通文档流的属性越来越力不从心,比如一个垂直居中就很让人头疼。后来遇到一个布局问题,苦思良久无解,然后在前辈的指点下使用了Flex,问题瞬间解决。竟然这么神奇!那一刻真有一种相见恨晚的感觉。

Flex,顾名思义,flexible,可以自动根据布局需要灵活地调整被布局元素的位置和宽高,非常适于需要对齐、居中、等间距等规整布局,以及布局元素宽度不定的情况。

欲使容器元素变为flex布局上下文,块级元素可以声明display为flex,行内元素可以声明为inline-flex。布局方式主要在容器元素上指定。

身处flex上下文的元素,float、clear和vertical-align属性失效。position为absolute和fixed的元素将脱离文档流,而不参与flex布局;relative元素可以正常参与flex布局。

Flex上下文中的元素沿轴排布,默认横向从左到右的叫主轴,竖向从上到下的叫交叉轴,当然方向是可以改的。元素沿主轴依次排列,与主轴正交方向的对齐方式参考交叉轴。

容器属性

规定沿主轴排布方式的属性有:

flex-direction: row(默认) | row-reverse | column | column reverse 该属性规定主轴方向。

flex-wrap: no-wrap(默认) | wrap | wrap-reverse(从底往上逐行排版)

flex-flow是以上两个属性的简写

justify-content: flex-start(默认) | flex-end | center | space-between | space-around 注意!这里用的start、end而不是left、right,因为主轴方向不一定是从左向右~

规定沿交叉轴排布方式的属性有:

align-items: strech(默认) | flex-start | flex-end | center | baseline 重要属性!flex布局默认情况下会让未定高元素填满父容器,这在CSS2.1里实现巨麻烦的效果,就这么轻而易举地解决啦!垂直居中也简单,一条语句搞定!简直喜大普奔!

align-content: stretch(默认) | flex-start | flex-end | center | space-between | space-around 多根主轴(多行)在交叉轴上的排布方式,单轴时无效。默认会拉伸每个主轴上的元素以填满交叉轴长。利用该属性很容易实现多行居中。

子元素属性

order:整数,默认0,决定沿主轴的出场顺序

flex-grow: 整数,默认0,定义主轴有多余空间时项目放大的比例。具体地说,当只有一个项目该属性不为0时,它将占满剩余空间;当有多个时,将按该属性值的比例瓜分剩余空间。

flex-shrink: 整数,默认1,定义主轴空间不足时项目缩小的比例,类似grow。

flex-basis: 长度,默认auto,定义项目占据主轴的长度。浏览器据此计算主轴剩余空间。

flex: 以上三个属性的简写,为none时三个值分别为0 0 auto

align-self: 取值同align-items,多了个auto。允许单项与其他项不一样的对齐方式,覆盖align-items的效果。默认值auto继承父元素的align-items,或等于stretch。

Flex:CSS3布局利器的更多相关文章

  1. 整理CSS中display flex(布局利器)

    关于display:flex布局,有人了解颇深,我也是看着别人的东西学习的. display:flex的布局是什么.基本概念之类的我根本就不了解,只会用.每次看到概念之类的东西,我都是扫一眼就过去. ...

  2. CSS3动画属性和flex弹性布局各个属性

    [CSS3动画的使用] 1.声明一个关键帧(动画): @keynames name{ from{} to{} } 每个阶段的写法: ①可以直接使用from-to的写法 ②可以设置0%-100%的写法, ...

  3. 前端CSS3布局display:flex用法

    前端CSS3布局display:flex用法 先附上代码 点击查看代码 <!DOCTYPE html> <html> <head> <meta charset ...

  4. CSS3新属性之---flex box布局实例

    flex box布局实例 flex的强大之处在于不管什么布局,几行命令即可实现 /*本节模板div元素(代表骰子的一个面)是Flex容器,span元素(代表一个点)是Flex项目.如果有多个项目,就要 ...

  5. web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触

    15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...

  6. css进阶之二:flex弹性布局

    布局模式是指一个盒子与其兄弟.祖先盒的关系决定其尺寸与位置的算法.css2.1中定义了四种布局模式,分别是块布局.行内布局.表格布局.以及定位布局.css3引入了新的布局模式Flexbox布局,灵活度 ...

  7. 前端CSS3布局display:grid用法

    前端CSS3布局display:flex用法 1. 先附上代码 点击查看代码 <!DOCTYPE html> <html> <head> <meta char ...

  8. 2021年3月-第02阶段-前端基础-Flex 伸缩布局-移动WEB开发_流式布局

    移动web开发流式布局 1.0 移动端基础 1.1 浏览器现状 PC端常见浏览器:360浏览器.谷歌浏览器.火狐浏览器.QQ浏览器.百度浏览器.搜狗浏览器.IE浏览器. 移动端常见浏览器:UC浏览器, ...

  9. CSS弹性盒模型flex在布局中的应用

    × 目录 [1]元素居中 [2]两端对齐 [3]底端对齐[4]输入框按钮[5]等分布局[6]自适应布局[7]悬挂布局[8]全屏布局 前面的话 前面已经详细介绍过flex弹性盒模型的基本语法和兼容写法, ...

随机推荐

  1. Ubuntu下安装Apache2, php5 mysql

    不错的博文:http://blog.csdn.net/guaikai/article/details/6905781 1:首先安装apache:打开终端(ctrl+Alt+t), 输入命令:sudo ...

  2. 字符串编码、Base64字符串 互转

    /// <summary>  /// 将字符串编码为Base64字符串  /// </summary>  /// <param name="str"& ...

  3. Mysql技术内幕-笔记-第三章 查询处理

    第三章 查询处理 逻辑查询处理:(8) SELECT (9) DISTINCT <select_list> (1) FROM <left_table> (3) <join ...

  4. 批处理at命令--一切尽在计划中

    让计算机在自己规定的时间里干自己规定的事,一切尽在计划之中.所以at命令你一定不能错过. 概述 列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序,以及设置在指定时间和日期在计算机上运行 ...

  5. mao/reduce实现求平均值

    import java.io.*; import java.util.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io. ...

  6. ganglia 无数据问题解决

    用ambari安装了HDP版本的hadoop,dashboard中ganglia的CPU.内存.网络等监控没有数据,找了很多原因,最后发现是因为rrdcache的时间问题导致的. gmetad的deb ...

  7. python爬虫学习(3)_模拟登陆

    1.登陆超星慕课,chrome抓包,模拟header,提取表单隐藏元素构成params. 主要是验证码图片地址,在js中发现由js->new Date().getTime()时间戳动态生成url ...

  8. Java程序员25个必备的Eclipse插件

    原文:http://www.fromdev.com/2012/01/25-best-free-eclipse-plug-ins-for-java.html "工欲善其事, 必先利器" ...

  9. C#Stimulator项目>>>C/C++ DLL的生成和调用,Windows下的多线程

    Windows下的多线程 http://blog.csdn.net/ganpengjin1/article/category/2541791 使用C/C++建立DLL,环境VS2013 新建Win32 ...

  10. seaJs学习笔记之javascript的依赖问题

    之前分别为大家介绍了有关javascript中的冲突和性能问题,今天为大家介绍一下有关javascript中的依赖问题.我们将继续就之前javascript中性能问题继续介绍. 先来回顾一下性能问题的 ...