我在写移动端的项目时,会碰到类似如下布局,每行两个元素,每列就几乎无限制的,进行加载
在设置一个商品盒子的宽度时,无法设置固定宽度,因为不同设备宽度不一样,会导致屏幕 出现不同大小的留白,所以我需要通过flex设置弹性布局。
代码思路
1. 父元素设置flex布局,宽度100% ,并允许换行
2. 子元素通过 min-width规定,最小宽度,这样盒子就不能一直弹性的缩小下去了,就会产生换行的效果
代码实现如下
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
width: 100vw;
height: 100vh;
}
.box {
display: flex;
flex-wrap: wrap;
background-color: antiquewhite;
width: 100%;
justify-content: flex-start;
}
.item {
flex: 1;
border: 1px solid #000;
height: 200px;
/*设置最小宽度,才会让元素排不下,导致换行排列*/
min-width: calc((100% - 10px) / 2);
}
</style>
</head>
<body>
<!-- 在Vue中,直接for循环 类名box这个div -->
<div class="box">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</body>
</html>