flexbox 即css flexible box layout。

ie9及以下不支持flexbox。

flex详细规范(https://www.w3.org/TR/css-flexbox/)

为什么会用flexbox?

我们都知道现有的布局技术有,行内块,浮动,表格等等。

我们先说说,

行内块(inline-block)

它的最大问题就是,在HTML元素之间渲染空白(可以用fontsize为0去除);垂直居中也不容易;想让二个相邻元素,一个宽度固定,另一个填充剩余空间。

浮动

浮动布局,给浮动元素设置宽度为百分比的时候,最终计算的结果在不同的平台上,结果可能不一样;每次要清楚浮动,才能避免父盒子和元素折叠。

等等这些问题,flexbo可以都解决。

flexbox完全可以:

方便地垂直居中内容;

改变元素的视觉次序;

在盒子里自动插入空白及对齐元素,和自动对齐元素间的空白。

flexbox的方向、对齐,次序和弹性是它的四个关键特性。

flexbox的对齐

如果flexbox的方向设置为row,则主轴就是横轴,交叉轴就是纵轴;如果方向是column,则主轴就是纵轴,交叉轴就是横轴。

项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

main axis(主轴)

cross axis(交叉轴)

cross start(交叉轴起始点)

cross end(交叉轴起终点)····

flex容器上的属性

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction属性

决定主轴的方向(即项目的排列方向)。

值:row | row-reverse | column | column-reverse

默认值为row

flex-wrap属性

值:nowrap | wrap | wrap-reverse

默认值为nowrap

flex-flow属性

flex-direction属性和flex-wrap属性的简写形式。

默认值为row nowrap

justify-content属性

定义了项目在主轴上的对齐方式。

值: flex-start | flex-end | center | space-between | space-around;

align-items属性

align-items属性定义项目在交叉轴上如何对齐。

值:flex-start | flex-end | center | baseline | stretch;

 

align-content属性

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

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

stretch(默认值):轴线占满整个交叉轴。


order属性

order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

flex属性

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

将flex-shrink设置为0,那么flex-basis实际上就是最小的宽度。

align-self属性

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

值: auto | flex-start | flex-end | center | baseline | stretch;

小应用:完美的垂直居中

display: flex;
align-items:center;
justify-content: center;

效果图:

简单的粘附页脚

假如页面内容不够长时,仍然想让页脚停留在视口的底部,使用flexbox:

body{

display: flex;

flex-direction:column;

min-height:100%;

color: #ebebeb;}

.MainContent{flex:;}

这个例子的原理是,整个body是伸缩容器,flex属性会让内容在空间允许的情况下进行伸展。所以主内容尽可能的占据有效空间。

css flexbox 弹性布局的更多相关文章

  1. CSS Flexbox 弹性盒子模型

    CSS Flexbox 弹性盒子模型 设置元素样式为 display: flex 或 display: inline-flex, 让元素变成flex容器, 从而可以通过flex模式布局它的子元素. f ...

  2. 【RN - 基础】之FlexBox弹性布局

    前言 弹性盒模型(The Flexible Box Module),又叫FlexBox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同的屏幕,为盒装模型提供最大的灵活 ...

  3. CSS3中的Flexbox弹性布局(一)

    CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定.调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简 ...

  4. css3 FlexBox 弹性布局

    Flex 弹性布局 这个是css3中新添加的内容,现在已经支持所有的浏览器,利用Flex布局,可以简便.完整.响应式地实现各种页面布局. 注意:在设置 flex 后,子元素的flaot ,clear, ...

  5. HTML/css之弹性布局

    1.flex 弹性布局 产生的比较晚 目前在移动网页开发中可以使用 而且逐渐成为主流. 在桌面网页开发中,使用的比较少 (主要是桌面浏览器的兼容性问题更加严重) 开启方法: 在容器标签上,加上disp ...

  6. CSS3中的Flexbox弹性布局(二)

    flexbox详解 flexbox的出现是为了解决复杂的web布局,因为这种布局方式很灵活.容器的子元素可以任意方向进行排列.此属性目前处于非正式标准. flex布局模型不同于块和内联模型布局,块和内 ...

  7. css flex弹性布局学习总结

    一.简要介绍 flex( flexible box:弹性布局盒模型),是2009年w3c提出的一种可以简洁.快速弹性布局的属性. 主要思想是给予容器控制内部元素高度和宽度的能力.目前已得到以下浏览器支 ...

  8. Flexbox弹性布局

    Flexbox,一种CSS3的布局模式,也叫做弹性盒子模型,用来为盒装模型提供最大的灵活性.最新版本兼容IE11+.firefox.safari.chrome.opera及移动端,但移动端ios7.1 ...

  9. Flexbox弹性布局,更优雅的布局

    Flexbox,更优雅的布局 Flex 布局教程:语法篇 Flex 布局教程:实例篇 2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得 ...

随机推荐

  1. 题目1010:A + B(字符串拆分)

    问题来源 http://ac.jobdu.com/problem.php?pid=1010 问题描述 给我们一行标准的字符串,整行读入之后,把它拆开转换成数字进行计算. 问题分析 首先考虑一个问题:如 ...

  2. HTML-★★★★JavaScript的DOM操作★★★★-重点部分

    Window.document 对象 一.找到元素 document.getElementById("id"); 根据id找,最多找一个: var a = document.get ...

  3. image_size must contain 3 elements[4]

    今天在制作自己训练集合并且训练的时候,碰见了如下的错: image_size must contain 3 elements[4] 这是因为训练的数据集中不是所有的图片位深都是三通道的. 写一个脚本查 ...

  4. apache的应用(发布目录,黑白名单,虚拟主机,PHP-cgi支持,正向代理,https加密,)

    [root@apache1 ~]# yum install httpd -y [root@apache1 ~]# cd /var/www/html/   进入默认发布目录 [root@apache1 ...

  5. npm 包管理工具

    能注册后看简单的功能 订单加信息 下单之前的判断要配合海潮的迁移数据 运行自定义的脚本 在 package.json 的 scripts 里添加自定义的结点 ( 比如 CSOR-serve ) &qu ...

  6. JDBC(5)-处理大数据

    大数据对象处理主要有CLOB(character large object) 和BLOB(binary large object) 两种类型的字段. 在CLOB中可以存储大字符对象,比如长篇小说:在B ...

  7. execution(* *..BookManager.save(..))的解读

    execution(* *..BookManager.save(..))的解读: 第一颗* 代表ret-type-pattern 返回值可任意, *..BookManager 代表任意Pacakge里 ...

  8. 利用rem解决移动端响应适配问题

    最近看了<从网易与淘宝的font-size思考前端设计稿与工作流>和github上的<使用Flexible实现手淘H5页面的终端适配> 以前一直用百分比的我,对移动前端的H5页 ...

  9. 登录mysql 报 Access denied for user 'root'@'localhost' 错误

    安装mysql后登录提示:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:yes) 解决如下 ...

  10. Xshell关闭导致jar服务终止,使Jar在CentOS后台运行

    环境:Xsehll6,CentOS7 在项目文件夹新建一个runjar.sh 在sh中写入(举例说明) nohup java -Dfile.encoding=UTF- -jar fin-mgmt-.j ...