小课堂【css-05】

课题:Flexbox以及适用场景

分享人:桂梦

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

  网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。 它对于那些特殊布局非常不方便 2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。 目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。

2.知识剖析

什么是flex布局

  flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为 Flex 布局。 块级元素只需要display属性为flex即可。行内元素也可以使用 Flex 布局。 .box{ display: inline-flex; }。Webkit 内核的浏览器,必须加上-webkit前缀。

基本概念

  采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。 它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。 容器默认存在两根轴:弹性项目沿其依次排列的那根轴称为主轴(main axis)。垂直于主轴的那根轴称为侧轴(cross axis)。 项目默认沿主轴排列。
  弹性容器的主轴起点(main start)/主轴终点(main end)和侧轴起点(cross start)/侧轴终点(cross end)描述了弹性项目排布的起点与终点。 它们具体取决于弹性容器的主轴与侧轴中,由writing-mode确立的方向(从左到右、从右到左,等等)。
  根据弹性容器的主轴与侧轴,弹性项目的宽和高中,对应主轴的称为主轴尺寸(main size),对应侧轴的称为侧轴尺寸(cross size)。

容器的属性

display:将元素定义为容器,其子元素自动成为弹性项目。

flex-direction:该属性指定内部元素在flex中如何布局,定义了主轴的方向。

flex-wrap:用于指定flex子项是否换行。

flex-flow:是flex-direction和flex-wrap的简写。

justify-conten:用于指定主轴(水平方向)上flex指向的对齐方式。

align-items:用于指定侧轴(垂直方向)上flex指向的对齐方式。

align-content:该属性只作用于多行的属性下,用于多行的对齐方式。

项目的属性

order:数字。 该属性用来排列顺序,数值越小,越靠前,可以为负数,默认为0,数值相同时按照源码中的顺序排列。

flex-grow:数字。 项目的拉伸因子,当有剩余空间时,项目会根据各自的拉伸因子进行拉伸。默认为0(不拉伸),负值无效。

flex-shrink:数字。 项目的缩小比例,默认为1,负值无效。 flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。

flex-basis:auto/content/宽度。 指定了 flex 元素在主轴方向上的初始大小,默认为auto。

flex:none。 是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。 该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto),建议优先使用这个属性, 而不是单独写三个分离的属性,因为浏览器会推算相关值。

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

3.常见问题

flex的兼容问题

flex的布局在熟练后非常好用,可以节省代码量。但是pc端兼容性相对较差, IE要10甚至11以上才能更好的兼容。

4.解决方案

现在flex已获得的大部分浏览器的支持,可以去查看浏览器的内核可以知道是否支持。

5.代码实战

6.拓展思考

7.参考文献

阮一峰的网络日志

8.更多讨论

鸣谢

感谢大家观看

BY : 桂梦