Flex布局

2009年,W3C 提出了一种新的方案 Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

浏览器支持:IE10 F22 C21 O12.1 S6.1

教程参考:
- Flex 布局教程:语法篇 - 阮一峰
- 一个完整的Flexbox指南
- 理解 Flexbox:你需要知道的一切
- Flexbox 布局的正确使用姿势
- Flex布局新旧混合写法详解(兼容微信)

父元素设置

.parent{
    /* 旧版 */
    display:-moz-box; /* 兼容 Firefox */
    display:-webkit-box; /* 兼容 Chrome,Safari */
    display:box; /* 或者 inline-block */
    /* 新版 */
    display:-webkit-flex;
    display:flex; /* 移动端部分机型不支持? */
    /* 新版行内flex */
    display:-webkit-inline-flex; /* webkit */
    display:inline-flex;
    /* 兼容写法 */
    display: -webkit-box; /* 老版本语法: Safari, iOS, Android browser, older WebKit browsers. */
    display: -moz-box; /* 老版本语法: Firefox (buggy) */
    display: -ms-flexbox; /* 混合版本语法: IE 10 */
    display: -webkit-flex; /* 新版本语法: Chrome 21+ */
    display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ */

    /* 主轴方向 */

    /* 旧版 */
    -webkit-box-orient:horizontal; /* vertical */
    /* 新版 */
    flex-direction: row | row-reverse | column | column-reverse;
    /*主轴方向:左到右(默认) | 右到左 | 上到下 | 下到上*/
    /* 兼容写法 */
    /* 子元素的显示方向可通过 box-direction + box-orient + flex-direction 实现 */
    /* 左到右 */
    -webkit-box-direction: normal;
    -webkit-box-orient: horizontal;
    -moz-flex-direction: row;
    -webkit-flex-direction: row;
    flex-direction: row;
    /* 右到左 */
    -webkit-box-pack: end;
    -webkit-box-direction: reverse;
    -webkit-box-orient: horizontal;
    -moz-flex-direction: row-reverse;
    -webkit-flex-direction: row-reverse;
    flex-direction: row-reverse;
    /* 上到下 */
    -webkit-box-direction: normal;
    -webkit-box-orient: vertical;
    -moz-flex-direction: column;
    -webkit-flex-direction: column;
    flex-direction: column;
    /* 下到上 */
    -webkit-box-pack: end;
    -webkit-box-direction: reverse;
    -webkit-box-orient: vertical;
    -moz-flex-direction: column-reverse;
    -webkit-flex-direction: column-reverse;
    flex-direction: column-reverse;

    /* 主轴富余空间管理(水平对齐) */

    box-pack: start | end | center | justify;
    /*主轴对齐:左对齐(默认) | 右对齐 | 居中对齐 | 左右对齐*/
    justify-content: flex-start | flex-end | center | space-between | space-around;
    /*主轴对齐方式:左对齐(默认) | 右对齐 | 居中对齐 | 两端对齐 | 平均分布*/

    /* 侧轴富余空间管理(垂直对齐) */

    box-align: start | end | center | baseline | stretch;
    /*交叉轴对齐:顶部对齐(默认) | 底部对齐 | 居中对齐 | 文本基线对齐 | 上下对齐并铺满*/
    align-items: flex-start | flex-end | center | baseline | stretch;
    /*交叉轴对齐方式:顶部对齐(默认) | 底部对齐 | 居中对齐 | 上下对齐并铺满 | 文本基线对齐*/
}
  • 设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。

子元素设置

.children{
    /* 旧版 */
    -moz-box-flex:1.0; /* Firefox */
    -webkit-box-flex:1.0; /* Safari, Opera, Chrome */
    box-flex:1.0;
    /* 新版 */
    flex-grow:1;

    /* 定义子元素的显示次序,数值越小越排前 */

    /* 旧版 */
    -moz-box-ordinal-group: 1; /* Firefox */
    -webkit-box-ordinal-group: 1; /* Safari, Opera, Chrome */
    box-ordinal-group: 1;
    /* 新版 */
    order:1;
    /* 兼容写法 */
    -webkit-box-ordinal-group:1;
    -moz-order:1;
    -webkit-order:1;
    order:1;
}

您的赞助将会支持作者创作及本站运维

发表评论


TOP