Flexbox是CSS3提供的用于布局的一套新属性,是为了应对行内块、浮动和表格格式产生的问题而生的。其包含针对容器(弹性容器,flex container)和针对其直接子元素(弹性项,flex item)的两类属性。

Flexbox可以控制弹性项有:方向、主轴与辅轴上的对齐与分布、大小(基于内容及可用空间)、顺序

先推荐一个超棒的网站:Flex Boxes代码生成器

CSS3弹性盒新旧演变

属性速览

设置在flex盒子上

display: flex

这行代码也相当于声明了flex-direction:row

flex-flow

复合属性。 flex-flow:[ flex-direction ] || [ flex-wrap ]

flex-direction

flex-wrap

justify-content

补充1.space-between

第一个元素的边界与行的主起始位置的边界对齐,最后一个元素的边界与行的主结束位置的边距对齐,剩余的弹性盒项目则平均分布。如果最左边的剩余空间是负数,或该行只有一个子元素,则该值等效于'flex-start'

补充2.space-around

两端保留子元素与子元素之间间距大小的一半。如果最左边的剩余空间是负数,或该行只有一个弹性盒项目,则该值等效于'center'

补充3.设置margin

align-items

当增加Flex容器自身高度或者其中某一项的高度时:

对齐个别项:align-self(这是针对子项设置的属性)

align-content

适用于:多行的弹性盒模型容器。该属性对单行弹性盒子模型无效。(即:带有 flex-wrap: nowrap)。

设置在flex盒子里的项目上

flex

复合属性。flex: none | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

flex-basis

默认值:auto

控制项目在主轴方向上,经过修正之前的“首选”大小(width或height)。可以是长度值、比分比(相对容器的主轴而言),也可以是关键字auto

关键字auto的意思是这个项目可以从对应的属性(width或height)那里获得主尺寸——如果设置了响应属性的话。如果没有注尺寸,那么项目就根据其内容确定大小,有点类似浮动元素或行内块。

flex-grow

在通过flex-basis为每一项设置了首选大小之后,如果还有剩余空间,该系数表示如何处理。

默认值为0,如果没有显示定义该属性,是不会拥有分配剩余空间权利的。

flex-shrink

当项目宽度总和超过容器宽度时,Flexbox会按照flex-shrink属性来决定如何收缩它们。

flex-shrink的默认值为1,如果没有显示定义该属性,将会自动按照默认值1在所有因子相加之后计算比率来进行空间收缩。

某项的收缩空间大小 = (本项shrink本项basis)/ (所有项的shrinkbasis之和)* 超出的空间大小

align-self

比 align-items 多了个 auto 属性值,其它一样。

如果'align-self'的值为'auto',则其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。

order

用整数值来定义排列顺序,数值小的排在前面。可以为负值。

浏览器支持与语法

Flexbox已经得到主流浏览器较新版本的广泛支持。对于某些需要兼容的旧版本浏览器里(例如IE10及更早版本的Webkit浏览器),只要调整一下语法或提供商前缀,基本上也没问题。

display: -webkit-flex;   /* Safari,Chrome */
display: -ms-flexbox; /* IE浏览器 */
display: -webkit-box; /* Safari,Chrome */
display: -moz-box; /* Firefox */
display: flex;

参考

深入理解 CSS3 弹性盒布局模型

A Complete Guide to Flexbox

《精通CSS 高级Web标准解决方案》第六章第三节

CSS(六)- 内容布局 - Flexbox的更多相关文章

  1. CSS进阶内容——布局技巧和细节修饰

    CSS进阶内容--布局技巧和细节修饰 我们在之前的文章中已经掌握了CSS的大部分内容,但仍有一些内容我们没有涉略,这篇文章就是为了补充前面没有涉及的内容,为我们的知识做出补充并且介绍一些布局技巧 当然 ...

  2. CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

    新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域 ...

  3. CSS内容布局

    网页是由不同内容块构成的:标题.段落.链接.列表.图片.视频,等等. 1.定位 定位并不适合总体布局,因为它会把元素拉出页面的正常流. 元素的初始定位方式为静态定位(static),即块级元素垂直堆叠 ...

  4. HTML、CSS知识点,面试开发都会需要--No.4 内容布局

    No.4 内容布局 1.列举场景 同一行布局三个元素.三个元素等比显示,并且其他元素不会围绕这三个元素.如下要让下面的三个column等比显示在一行: 2.通过Float属性实现 (1)float:l ...

  5. 这些HTML、CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML、CSS、盒子模型、内容布局)

    这些HTML.CSS知识点,面试和平时开发都需要 No1-No4   系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) ...

  6. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  7. div+css网页标准布局实例教程(二)

    五.布局页面——头部和导航 有了上边的基础,下面的任务就是要利用html和css制作完成一个完整的网页了.先从头部开始,第三小节时我们已经把整体框架给搭建好了,就像盖房子一样,整体结构已经出来了,下面 ...

  8. css三栏布局方案整理

    日常开发中,经常会用到css三栏布局,现将工作中常用的css 三栏布局整理如下: 什么是三栏布局: 三栏布局,顾名思义就是两边固定,中间自适应. 一. float布局 <!DOCTYPE htm ...

  9. CSS流体(自适应)布局下宽度分离原则

    CSS流体(自适应)布局下宽度分离原则 这篇文章发布于 2011年02月28日,星期一,00:48,归类于 css相关. 阅读 73990 次, 今日 5 次 by zhangxinxu from h ...

随机推荐

  1. Rust异步之Future

    对异步的学习,我们先从Future开始,学习异步的实现原理.等理解了异步是怎么实现的后,再学习Rust异步编程涉及的2个库(futures.tokio)的时候就容易理解多了. Future rust中 ...

  2. [源码解析] Flink的groupBy和reduce究竟做了什么

    [源码解析] Flink的groupBy和reduce究竟做了什么 目录 [源码解析] Flink的groupBy和reduce究竟做了什么 0x00 摘要 0x01 问题和概括 1.1 问题 1.2 ...

  3. session共享同步redis策略

    关于session共享的文章,网上很多,可是最关键的点我没有看到一篇.也就是session对象到底是怎么同步到redis的. spring-session底层原理到底是怎么样的一个同步更新策略,我没有 ...

  4. acm对拍程序 以及sublime text3的文件自动更新插件auto refresh

    acm等算法比赛常用---对拍 以及sublime text3的文件自动更新插件auto refresh 对拍 对拍即程序自动对比正确程序的运行结果和错误程序的运行结果之间的差异 废话少说, 直接上操 ...

  5. gradle的搭建和配置

    下载 官方网站:https://gradle.org/install/#manually 提供了两种下载方式,Binary-only是只下载二进制源码,Complete, with docs and ...

  6. css3动画特效代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. Dubbo——服务发布原理

    引言 在使用Dubbo的时候你一定会好奇它是怎么实现RPC的,而要了解它的调用过程,必然需要先了解其服务发布/订阅的过程,本篇将详细讨论Dubbo的发布过程. 源码分析 发布服务 新学Dubbo大都会 ...

  8. ASP.NET WebAPI框架解析第二篇(HttpModule的创建和使用)

    我们先看一下执行流程图 图中画红圈的部分便是HttpModule,在说创建HttpModule之前,先说一下HttpApplication对象,HttpApplication对象由Asp.net框架创 ...

  9. Java Service Wrapper 浅谈

    在实际开发过程中很多模块需要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是 一旦服务器重启或出现异常时,程序往往无法自行修复或重启. ...

  10. StringEscapeUtils防止xss攻击详解

    StringUtils和StringEscapeUtils这两个实用类. 1.转义防止xss攻击 1.转义可以分为下面的几种情况 第一用户输入特殊字符的时候,在提及的时候不做任何处理保持到数据库,当用 ...