什么是 Flexbox ?
Flexbox 是 flexible box 的简称(愚人码头注:意思是“灵活的盒子容器”),是 CSS3 引入的新的布局模式。它决定了元素如何在页面上排列,使它们能在不同的屏幕尺寸和设施下可预测地展示出来。
它之所以被称为 Flexbox ,是由于它能够扩展和收缩 flex 容器内的元素,以最大限度地填充可使用空间。与以前布局方式(如 table 布局和浮动元素内嵌块元素)相比,Flexbox 是一个更强大的方式:
什么情况下不建议用 Flexbox ?
尽管 Flexbox 非常适合缩放,对齐和重新排序元素,但以下情况应该尽量避免用 Flexbox 布局:
浏览器支持 Flexbox 的情况:
旧版浏览器,如IE 11或者更低版本,不支持或者仅部分支持 Flexbox 。假如你想安全的用页面正常呈现,你应该退回到其余的 CSS 布局方式,比方结合float 的 display: inline-block 或者者 display: table 等。但是,假如您只针对现代浏览器,那么 Flexbox 绝对值得一试。
术语
在 Flexbox 模型中,有三个核心概念:
– flex 项(愚人码头注:也称 flex 子元素),需要布局的元素
– flex 容器,其包含 flex 项
– 排列方向(direction),这决定了 flex 项的布局方向(愚人码头注:更多的文章叫主轴)
最好的学习方式是从经验和例子中学习,所以让我们开始吧!
Level 1?—?基础
1)创立一个 flex 容器
HTML 代码:
CSS 代码:
要创立一个 flex 容器,您只要要将一个 display: flex 属性增加到一个元素上。默认情况下,所有的直接子元素都被认为是 flex 项,并从左到右依次排列在一行中。假如 flex 项的宽度总和大于容器,那么 flex 项将按比例缩小,直到它们适应 flex 容器宽度。
2)将 flex 项排成一列
CSS 代码:
可以通过(在 flex 容器中)设置 flex-direction: column 使 flex 项垂直布局。也可以通过设置 flex-direction: column-reverse 或者 flex-direction: row-reverse 来使 flex 项以相反的顺序排列。
CSS 代码:
Level 2?—?新手
1)靠右对齐的 flex 项
CSS 代码:
回想一下,每个 Flexbox 模型都有 flex 方向(主轴)。justify-content 使用于指定 flex 项在 flex 方向(direction)上的对齐位置。在上面的例子中,justify-content:flex-end 表示 flex 项在水平方向上靠 flex 容器的末端对齐。这就是为什么他们被放在了右边。
2)居中对齐的 flex 项
CSS 代码:
3)铺开的 flex 项
您可以通过用以下 justify-content 属性的三个间距值之一来指定容器中 flex 项之间应显示多少空间:
愚人码头注:网上找了一张图片能更好的解释 justify-content 属性值的体现,如图:
4)flex 项在交叉轴上的对齐
CSS 代码:
通常,我们想沿着 flex 方向(主轴)排列 flex 项,还可以在垂直于它的方向(交叉轴)上对齐 flex 项。通过设置 justify-content:center和align-items:center,可以使 flex 项水平和垂直放置在 flex 容器的中心。
5)对齐某个特定的 flex 项
CSS 代码:
可以在某个特定的 flex 项上用 align-self CSS 属性,来使该特定的 flex 项与容器中的其余 flex 项进行对齐。
Level 3?—?中级
1)允许 flex 项多行/列排列
CSS 代码:
默认情况下, flex 项不允许多行/列排列,假如 flex 容器尺寸对于所有 flex 项来说不够大,那么flex 项将被调整大小以适应单行或者列排列。
通过增加 flex-wrap: wrap ,可以将溢出容器的 flex 项将被排列到另一行/列中。
2)flex 项反向多行/列排列
CSS 代码:
flex-wrap:wrap-reverse 依然使 flex 项以多行/列排列,但是它们从 flex 容器的末尾开始排列的。
3)多行/列排列的 flex 项在交叉轴上的对齐方式
CSS 代码:
默认情况下,当 flex 容器的交叉轴(cross axis)上存在多余空间时,您可以在 flex 容器上设置 align-content,以控制 flex 项在交叉轴(cross axis)上的对齐方式。可能的值是 flex-start,flex-end,center,space-between,space-around ,space-evenly 和 stretch(默认)。
Level 4?—?高级
1)拉伸 flex 项
CSS 代码:
flex-grow 只有在 flex 容器中有剩余空间时才会生效。flex 项的 flex-grow 属性指定该 flex 项相对于其余 flex 项将拉伸多少,以填充 flex 容器。默认值为1。当设置为 0 时,该 flex 项将不会被拉伸去填补剩余空间。在这个例子中,两个项的比例是 1:2,意思是在被拉伸时,第一个 flex 项将占使用 1/3,而第二个 flex 项将占据余下的空间。
愚人码头注:这里特别要注意的是 flex-grow 控制的是 flex 项的拉伸比例,而不是占据 flex 容器的空间比例。
2)收缩元素
CSS 代码:
flex-shrink 只有在 flex 容器空间不足时才会生效。它指定 flex 项相对于其余 flex 项将缩小多少,以使 flex 项不会溢出 flex 容器。 默认值为 1。当设置为0时,该 flex 项将不会被收缩。在这个例子中,比例是1:2,意思是在收缩时,第一项将收缩 1/3 ,而第二个项目将被收缩 2/3 。愚人码头注: flex-shrink 和 flex-grow 正好相反
3)设置元素的大小
CSS 代码:
您可以用 flex-basis 定制 flex 项尺寸来代替元素的初始大小。默认情况下,其值为 flex-basis: auto,这意味该尺寸着从非 Flexbox CSS规则计算的。您还可以将其设置为某个绝对值或者相对于 flex 容器百分比的值;例如 flex-basis:200px 和flex-basis:10%。
4)将 flex-grow, flex-shrink, 和 flex-basis 放在一起
CSS 代码:
flex 是 flex-grow,flex-shrink 和 flex-based 的缩写。在这个例子中,第一个 flex 项设置为flex-grow: 1,flex-shrink: 0,flex-basis: 100px,第二个 flex 项设置为flex-grow: 2,flex-shrink: 0,flex-basis: 10%。
分析一下上面的这个例子,因为在 flex 容器(200px)中存在剩余空间 (90px),只有 flex-grow 才能起作使用,flew-shrink 被忽略。第一个 flex 项的flex-grow 为 1,第2个 flex 项的flex-grow为 2,所以第1个 flex 项拉伸 30px,第2个 flex 项拉伸 60px。
总结
Flexbox 易于学习和操作。 由于 Web 开发周期短,迭代速度很快,所以对其用的知识尤其有使用。假如你想在你的项目中用 Flexbox 之前进行更多地尝试,您可以访问 Flexyboxes 和 Flexbox Froggy 练习。你也可以阅读 CSS trick: Flexbox 指南 和 W3C:CSS Flexible Box。
仿《xp系统之家》软件下载站模板 游戏下载站整站源码带采集手机版的
2.7.3好商城V5多客户商城源码+手机版微商城b2b2c商城网站
红色早教幼儿园类学校织梦模板
魔域单机版 精品最新一键 简单一键安装架设游戏(包进游戏)一分价钱一分货10分服务
(自适应手机版)HTML5智能锁具电子产品研发类网站pbootcms模板响应式电子智能锁网站源
同款羊了个羊消除益智小游戏流量主广告收益系统源码搭建
织梦新闻源码大气头条资讯网站模板带后端数据自动采集dede手机站
javawebJAVAJSP健身俱乐部信息管理系统JSP俱乐部管理系统JSP健身管理系统健身中心管理
Unity3d Space Combat Kit 2.4.4 太空战机射击战斗游戏模板源码
拍卖转拍,玩家互动筛选自己想要的拍品,转拍获利,还可以提货,一款购物和赚钱的不二选择