Flexbox 布局
Flexbox 布局弹性盒子是一种新技术,但在如今各个浏览器都广泛支持的情况下,它已经开始准备广泛应用了。 弹性盒子提供了工具,允许快速创建曾经被证明用CSS很难实现的一些复杂,灵活的布局和功能。 本文将解释所有的基本原理。 基本概念采用Flex布局的元素被称为 Flexbox 产生的意义长久以来,唯一可用的且有稳定的跨浏览器兼容性的能用来构建 CSS 布局的工具只有 floats 和 positioning。它们是既可行,表现也不错的布局方案,但是在某些布局方面它们就有限制,并且难以实现。 以下的布局要求很难用( floats 和 positioning)方便且灵活的实现:
flex容器容器默认存在两根轴:水平的主轴 项目默认沿主轴排列。单个项目占据的主轴空间叫做 Flex容器属性- flex-direction - flex-wrap - flex-flow - justify-content - align-items - align-content flex-direction
flex-wrap默认情况下,
flex-flow
justify-contentjustify-content属性定义了项目在主轴上的对齐方式。
align-items
align-content
flex-start:与交叉轴的起点对齐。 flex-end:与交叉轴的终点对齐。 center:与交叉轴的中点对齐。 space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。 space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。 stretch(默认值):轴线占满整个交叉轴。 item元素order flex-grow flex-shrink flex-basis flex align-self 共6个属性设置在 orderorder属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。 flex-grow
如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。 flex-shrink
如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。 flex-basisflex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。 它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。 flex
该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。 建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。 align-selfalign-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 该属性可能取6个值,除了auto,其他都与align-items属性完全一致。 易错总结
兼容性兼容大部分浏览器,可以在生产环境中放心使用。 参考文档[1].Flex 布局教程:语法篇 阮一峰 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |