作者 by nkdns / 2022-10-07 / 1 评论 / 950 个足迹
布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 +
float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。因此在2009年,W3C提出了一种新的方案——Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。
Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。
*任何一个容器都可以指定为Flex布局。
.box{
display: flex;
}
行内元素也可以使用Flex布局。
.box{
display: inline-flex;
}
*Webkit内核的浏览器,必须加上-webkit前缀。
.box{
display: -webkit-flex; /* Safari */
display: flex;
}
当设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。 flex定义在父亲身上,控制的是子元素
在flex布局中,分主轴与侧轴两个方向,同样的叫法有:行和列、x轴和y轴
- 默认主轴方向是x轴方向,水平向右
- 默认侧轴方向是y轴方向,水平向下
flex-flow属性是flex-direction和flex-wrap属性的复合属性
flex-flow:row wrap;
/*设置主轴为x轴,并自动换行*/
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
.item {
flex: <'flex-grow'> <'flex-shrink'> <'flex-basis'>;/*两个快捷值:auto (1 1 auto) 和 none (0 0 auto)*/
}
.item {
display: flex;
height: 150px;
margin: 0 auto;
padding: 0;
}
/*在有item样式的父级元素下创建3个div标签,并分别设置样式*/
.item div:ntu-child(1){
width: 100px;
}
.item div:ntu-child(2){
flex: 1;/*将标签1、3瓜分剩下的空间分成一份给标签2*/
}
.item div:ntu-child(3){
width: 100px;
}
注意:和z-index术一样
.item {
order: <integer>;
}
定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
.item {
flex-grow: <number>; /* default 0 */
}
它的默认值为auto,即项目的本来大小
.item {
flex-basis: <length> | auto; /* default auto */
}
 评论 1 条