Flex布局是一种十分灵活方便的布局方式,目前主流的现代浏览器基本都实现了对Flex布局的完全支持。而在微信小程序中,IOS端使用的渲染引擎WKWebView和安卓端使用的X5 ,也都实现了对Flex的支持。所以为了在小程序开发中更方便地布局,有必要来详细了解下Flex布局在小程序的使用。本文将针对Flex布局的各个属性进行介绍,并直接使用wxss来编写例子,运行环境是小程序的开发者工具。 Flex布局的基本概念Flex布局直接应用于一个Flex容器,布局的对象是容器中的各个项目元素(“item”)。项目元素布局的核心概念在于两条轴:主轴和交叉轴,通过控制项目元素在主轴、交叉轴上的排列方式进行布局,参见下图: 这里要注意两条轴的方向不是固定的(可以通过flex-direction来控制);此外一个Flex容器里可以再包含Flex容器,也就是能拥有多根主轴和交叉轴。 Flex容器属性容器属性有6个:
flex-direction设定主轴方向:
flex-wrap规定如果容器在主轴方向无法容下所有项目,主轴上的项目如何换行(flex-direction为column和column-reverse时,就是“换列”了):
flex-flowflex-direction和flex-wrap的简写,默认值为“row wrap”。 justify-content所有项目在主轴上对齐方式:
align-items所有项目在交叉轴上对齐方式:
align-content定义了多根主轴的对齐方式,如果项目只有一根主轴则不起作用,多根主轴一般会在主轴上折行时出现:
Flex项目属性项目属性有6个:
order定义项目排列序号;默认为0,可为负: flex-basis在Flex项目自适应放大缩小之前,项目占据的主轴空间的基值。 默认值为auto,即项目的本来大小: flex-grow注意该属性指定的是项目对剩余空间的瓜分比例,这里有两个关键点:
默认为0,即如果存在剩余空间也不放大(grow),不可为负: flex-shrink:空间不足时项目对缩小份额的瓜分比例,还是有两个关键点:
默认为1,即如果空间不足项目将缩小,不可负: flexflex-grow, flex-shrink 和 flex-basis的简写。 默认值为“0 1 auto”,还有两个值auto即“1 1 auto”、none即“0 0 auto”。 align-self让一个项目有与其他项目不同的交叉轴对齐方式,主要用来覆盖align-items属性。 默认值是auto,即继承父元素的align-items属性,若无父元素则等同于stretch;其他值效果和align-items一样。 总结Flex布局也叫弹性布局,个人理解所谓“弹性”主要体现在Flex项目的自伸缩上。主轴上的自伸缩主要通过flex-grow、flex-shrink来控制,交叉轴上的自伸缩则体现在align-*属性的默认值stretch上。 一些注意点
参考Flex 布局教程 |