flex布局语法

本文详细介绍CSS3弹性盒子(Flexbox)的概念、使用方法,包括flex-direction、flex-wrap、justify-content、align-items等属性,以及子元素的order、flex-grow、flex-shrink等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录


前言

弹性盒子是css3的一种新的布局模式。随着浏览器的发展,flex(弹性盒子)目前已经得到所有浏览器的支持。

相对于传统的布局display+position+float而言在一些特定情况flex有着天然的优势,比如垂直居中。所以在面试时flex会是css的重点, 


一、flex是什么?

flex是Flexible Box的缩写,为弹性盒子

flex(弹性盒子)是一种当页面需要适应不同屏幕大小以及设备类型时确保元素拥有恰当行为的布局模式。引入flex是为了提供一种更加高效的方式来对容器中的子元素进行排列、对其和分配空白空间

二、使用方法

    .box{
        display: flex;
    }
// 行内元素也可以使用flex
    .box{
        display: inline-flex;
    }
//Webkit内核的浏览器必须加上-webkit前缀
    .box{
        display: -webkit-flex;
    }
    .box{
        display: -webkit-inline-flex;
    }

1.父元素的属性

flex-direction        设置主轴的方向

flex-wrap              设置换行方式

flex-flow                flex-direction和flex-flow的结合

justify-content       设置子元素在主轴上的对其方式

align-items            设置子元素在交叉轴上的对其方式

align-content         设置多根轴线的对其方式

代码如下(示例):

1.1 flex-direction         主轴方向

父元素默认存在两根轴:水平的主轴和垂直的交叉轴。

.box {
    flex-direction: row | row-reverse | column | column-reverse;
}
//row(默认值)      主轴为水平方向,起点在左端。
//row-reverse      主轴为水平方向,起点在右端。
//column           主轴为垂直方向,起点在上沿。
//column-reverse   主轴为垂直方向,起点在下沿。

1.2 flex-wrap                换行方式

.box{
    flex-wrap: nowrap | wrap | wrap-reverse;
}
//nowrap          (默认值)不换行
//wrap            换行,第二行在下方
//wrap-reverse    换行,第二行在上方

 

1.3 flex-flow                 flex-direction和flex-flow的结合

.box {
    flex-flow: <flex-direction> & <flex-wrap>;
}

1.4 justify-content      主轴对其方式

.box {
    justify-content: flex-start | flex-end | center | space-between | space-around;
}
//flex-start        (默认值):左对齐
//flex-end          右对齐
//center            居中
//space-between     两端对齐,项目之间的间隔都相等。
//space-around      每个子元素两侧的间隔相等,元素与元素之间的间隔是元素与边框的两倍

 

1.5 align-items             交叉轴对其方式

.box {
    align-items: flex-start | flex-end | center | baseline | stretch;
}
//flex-start:    交叉轴的起点对齐。
//flex-end:      交叉轴的终点对齐。
//center:        交叉轴的中点对齐。
//baseline:       项目的第一行文字的基线对齐。
//stretch         (默认值):如果子元素未设置高度或设为auto,将占满整个容器的高度。

1.6 align-content          多根轴线对其方式

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
flex-start      与交叉轴的起点对齐。
flex-end        与交叉轴的终点对齐。
center          与交叉轴的中点对齐。
space-between   与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around    每个轴线两侧的间隔相等,轴线与轴线之间的间隔是轴线与边框的两倍
stretch         (默认值):轴线占满整个交叉轴。

2.子元素的属性

order                设置排列顺序,数值越小顺序越靠前

flex-grow          设置元素的放大比例,默认0即存在剩余空间不放大

flex-shrink        设置元素的缩小比例,默认为1即空间不足被缩小

flex-basis          设置项目在分配多余空间之前固定的大小,默认为auto即项目本身大小

flex                    flex-grow、flex-shrink和flex-basis的缩写,默认为0 1 auto,可填入快捷值auto或none。auto为“1 1 auto”、none为“0 0 auto”

align-self            设置单个元素的对其方式,可不同于其他元素且会覆盖父元素的align-items

2.1 order                排列顺序

.el {
  order: <integer>;
}
//默认0

2.2 flex-grow          放大比例

.el {
    flex-grow: <number>;
}
//默认0,即存在剩余空间也不放大

2.3 flex-shrink        缩小比例

.el {
  flex-shrink: <number>;
}
//默认1

2.4 flex-basis          固定大小

.el {
  flex-basis: <length> | auto; 
}
// 默认auto

2.5 flex

flex-grow、flex-shrink和flex-basis的缩写,默认为0 1 auto,可填入快捷值auto或none。auto为“1 1 auto”、none为“0 0 auto”

.el {
  flex: none | auto | <'flex-grow'> <'flex-shrink'> <'flex-basis'>
}
//默认为 "0 1 auto"

2.6 align-self            单个元素对其方式

align-self属性可以让单个子元素与其他子元素拥有不同的对其方式

默认值为auto 即继承父元素的align-items如父元素没有align-items 则和stretch效果一样

.el {
    align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
//除auto外其他值等同于align-items的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值