实习以来做了三个小控件,都是用的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. 推荐一款自己的软件作品[豆约翰博客备份专家],新浪博客,QQ空间,CSDN,cnblogs博客备份,导出CHM,PDF(转载)

    推荐一款自己的软件作品[豆约翰博客备份专 豆约翰博客备份专家是完全免费,功能强大的博客备份工具,博客电子书(PDF,CHM和TXT)生成工具,博文离线浏览工具,软件界面美观大方,支持多个主流博客网站( ...

  2. poj 1654 Area(多边形面积)

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17456   Accepted: 4847 Description ...

  3. HTML5与CSS3权威指南.pdf9

    第21章 Media Queries相关样式 该模块中允许添加媒体查询(media query)表达式,用以指定媒体类型,根据媒体类型来选择使用的样式(显示器.便携设备.电视机) 使用方法@media ...

  4. Junit初体验

    JUnit是一个开源的Java单元测试框架,由 Erich Gamma 和 Kent Beck 开发完成. 主要是为了方便开发人员在自己开发的过程中能够及时的发现和解决bug用的,一方面自己可以通过单 ...

  5. oppo X907刷机包 COLOROS 1.0 正式版公布 安卓4.2.2

    ROM介绍 本版本号将是X907史上最好的一版本号 全新COLOROS的UI 更新全局手势板操作 优化高速启动应用 安全保障中心也是一直採用COLOROS组成的 COLOROS 1.0给用户带来在线音 ...

  6. 【C#】与C及OC的不同点

    事实上熟悉这些语言的朋友们深知,这几个语言全然没有可比性. 因为工作须要,近期须要重温C#语言,难免会受到C和OC的基础知识影响. 此篇是本人的一个学习笔记.仅此献给有C/OC基础,须要继续学习C# ...

  7. C# richTextBox编辑器

    附件:http://files.cnblogs.com/xe2011/CSHARP_RichTextBoxEditor.rar 完整的转到这里 http://www.cnblogs.com/xe201 ...

  8. web安全培训笔记

    1.漏洞获取方法 1)扫描器扫描 2)乌云 3)线上服务漏洞 样例: 线上crm->管理员弱口令->后台上传头像处漏洞->上传php文件->进入内网->扫描内网拓扑-&g ...

  9. OKHttp的简单使用

    一方面,最近关于OKHttp的讨论甚嚣尘上,另一方面,我最近也更新了android6.0,发现在6.0中HttpClient不能使用了,于是决定抽时间也看一下OKHttp,总结了一点东西,与大家分享. ...

  10. NDK开发之ndk-build命令详解

    毫无疑问,通过执行ndk-build脚本启动android ndk构建系统. 默认情况下,ndk-build脚本在工程的主目录中执行,如: 我们可以用使用-C参数改变上述行为,-C指定工程的目录,这样 ...