伸缩盒布局

伸缩盒布局

伸缩盒布局解决的问题与浮动布局类似,都是让⼦元素在容器中并列显示
是一种浏览器提倡的布局模型,避免了浮动脱标。
CSS3伸缩盒( 弹性盒)( Flexible Box 或 flexbox),是⼀种当⻚⾯需要适应不同的屏幕⼤⼩以及设 备类型时确保元素拥有恰当的⾏为的布局⽅式。

	<div class=container>
		<div> </div>
		<div> </div>
		<div> </div>
	</div>
	
	<ul class=container>
		<li> </li>
		<li> </li>
		<li> </li>
	</ul>

1. 概念

1)伸缩盒容器:添加display:flex;属性后,容器就为flex容器 (div.container , ul.container)
2)伸缩盒元素:felx容器内的元素就是flex元素(div , li)
3)主轴:默认主轴为x轴,在伸缩盒中伸缩盒元素沿主轴方向进行排列
4)交叉轴:与主轴垂直的轴
5)剩余空间:假设在 1 个 500px 的容器中,我们有 3 个 100px 宽的元素,那么这 3 个元素需要占 300px 的宽,剩下 200px 的可⽤空间。在默认情况下, flexbox 的⾏为会把这 200px 的空间 留在最后⼀个元素的后⾯。

2. 规则

1)伸缩盒容器规则

  • dispaly:flex; (给父元素添加)
    强制让他的子元素沿着主轴方向显示,并且子元素不会脱离默认文档流;交叉轴上元素的高度如果没有指定,应该与父元素的高度一致。

  • flex-direction:row;
    定义主轴的方向,
    row 主轴方向为x轴,
    column 主轴方向为y轴

  • flex-wrap:nowrap;
    当子元素的长度加起来超过主轴上的父元素的宽度,
    wrap ⼦元素换⾏显示
    nowrap(默认值)不换行,子元素将会缩⼩以适应容器

  • align-items:strech;
    定义伸缩盒容器中的子元素在交叉轴上的排列方式
    flex-start 在伸缩盒⼦容器的伸缩开始位置显示,即伸缩盒⼦容器顶部
    flex-end 在伸缩盒⼦容器的伸缩结束位置显示,即伸缩盒⼦容器底部
    stretch (默认值)将盒⼦在交叉轴上进⾏拉伸,直⾄适应整个伸缩盒⼦容器(子元素没有设置高度时)
    center 盒⼦在交叉轴中⼼显示
    baseline 第一行文字的基线对齐

  • justify-content:space-around;
    定义伸缩盒容器中的子元素在主轴上的排列方式
    flex-start (默认值)在主轴的开始显示
    flex-end 在主轴的结束显示
    space-around 填充空⽩⾃适应在主轴中⼼显示 ,每个元素之间的左右外边距相等,中间的间距是左右两边间距的二倍
    center 在主轴的中⼼显示 ,空白分布在两边
    space-between 填充空⽩⾃适应在主轴中⼼显示,但是⾸尾两个元素距离容器没有空⽩
    space-evenly 每个元素之间和两边元素与容器的间隔都相等
    要先确定主轴方向,再选择对象的属性实现主轴或侧轴的对齐方式

使子元素垂直居中显示:

 display:flex;
 justify-content:center;
 align-items:center;

当给子元素设置宽度,但是有多个伸缩盒元素且元素宽度之和大于伸缩盒容器的宽度时,子盒子的宽度会自动缩减至伸缩盒元素全部置于伸缩盒容器内

2)伸缩盒元素规则

  • flex-basic主轴上的基本长度(基本工资)
    为未分配剩余空间时伸缩盒元素在主轴上的空间⼤⼩,flex容器⾥除了元素所占的空间以外的富余空间就是 可⽤空间 available space
    auto 默认值,若未给子元素指定大小,若没有则默认为auto

  • flex-grow:主轴上剩余空间分配的份数(分红),默认为0,即有剩余空间时该元素不扩大
    若被赋值为⼀个正整数, flex 元素会以 flex-basis 为基础,沿主轴⽅向增⻓尺 ⼨,使该元素延展占据此⽅向轴上的可⽤空间(available space)

  • flex-shrink:主轴上亏损空间(子元素的内容大于父元素的大小)的分摊份数(亏损),默认为1,空间不足时,元素都等比例缩小
    设置为正整数来缩⼩它所占空间到flex-basis以下

  • flex 简写形式
    flex: flex-grow,flex-shrink,flex-basis ;

  • order 属性定义伸缩盒元素的排列顺序。
    数值越小,排列越靠前,默认为0。

  • align-self: 单独设置某个弹性盒子的侧轴对齐方式

    当设置弹性盒子的侧轴对齐方式后,父元素上设置的侧轴拉伸效果对该弹性没有效果,没有设置高度时,该弹性盒子的高度为内容高度

    若伸缩盒元素没有给宽高,则高度会拉伸至盒子高度(单独设置侧轴对齐方式的除外),宽度为内容宽度

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值