通俗理解css弹性盒子

先决条件

  • 熟悉html,css的基本语法
  • 高中英语水平
  • 准备一些不同大小的照片
  • 好奇心和探索精神
    其实,这是个笔记。这个笔记来源于以下课程:freecodecamp

什么是css弹性盒子FlexBox

通俗的讲起来,FlexBox就是一种让元素自动布局的方法。在不同的设备/网页大小下,你的元素能够根据你自己的设置自动调节布局。具体的我们在代码中讲解。

开始使用弹性盒子

先从最初的一段代码开始:

.e1 {
	display: flex;
}

e1是你创建的类,display: flex;表示使用弹性盒子。

光看不练没什么效果,现在请先创建一个基础的html网页,添加div元素,在其中加上多个img元素,放上你自己准备好的照片。

主轴和交叉轴

Flexbox中的主轴决定了元素的排列方向。有4个值,看看下面的4段不同的代码:

.e1{
	display: flex;
	flex-direction: row;
}
.e1{
	display: flex;
	flex-direction: row-reverse;
}
.e1{
	display: flex;
	flex-direction: column;
}
.e1{
	display: flex;
	flex-direction: column-reverse;
}

利用你的英语想一想,应该很快就能明白了。row/column表示横着排和竖着排,-reverse表示反转排列方向。为了让你的照片不要溢出屏幕,你可以用竖着排的方式。不过这样一行只有一张,所以我们先选择横着排,然后用下面的方式换行:

.e1{
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
}

默认值是nowarp,这里设置为wrap表示允许换行。尝试改变你的浏览器大小,可以看到照片随着你的网页大小换行了。

那么什么是交叉轴呢?交叉轴是垂直与主轴的轴,知道这一点就够了。

对齐

你的容器现在默认左对齐。用下列代码可以修改为居中:

.e1{
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: center;
}

justify-content控制整个Flexbox容器的主轴对齐方式,这里表示居中。此外,要保证每一项在交叉轴居中,你需要利用align-items:

.e1{
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
}

所以这两个到底有什么区别???为了更好理解,有一个网页可以自己尝试更改。MDN Web Docs

1个元素可能无法很好地观察到区别,因此试试把下面代码里地这两个属性改成center:

<div class="box">
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
  <div></div>
</div>
.box {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: normal;
  align-items: normal;
  height: 600px;
}
.box div {
  width: 100px;
  height: 100px;
  background-color: red;
  margin:10px;
}

调节图像

利用以下代码,可以保持图像纵横比,来自动调节到适合的大小(会裁剪

.e1 img {
	object-fit: cover;
}

这里指定了所有e1类的img元素,将其调节到合适的大小。

给图片添加间距?用gap属性:

.e1{
	gap: 10px;
}

伪元素

如果最后一行缺少图片,那么最后一张图会自动居中。为此,添加一个虚拟的元素是必要的。

.e1::after {
	content: "";
	width: 100px;
}

你可以自行调节,来让最后一行多出一个元素。目前它不会显示任何内容,你可以用css指定它的颜色等属性。

小测试

  • 什么是Flexbox?如何使用它?
  • 主轴、交叉轴分别是什么?如何设定它们?
  • 如何设置自动换行?
  • 如何设置居中?2种居中方式的区别是?
  • 如何添加伪元素?有什么用?
  • 14
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值