神奇的3*3盒子根据父节点自适应宽度。
代码
嵌套需要在里面的盒子absolute,否则padding会互相叠加导致换行。
<template>
<div class="cube-box" style="width: 80%;margin: 0 auto">
<div class="cube ">
<div class="cube-inner">
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
</div>
</div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
<div class="cube"></div>
</div>
</template>
<style scoped>
.cube {
width: 33.33333333333%;
display: inline-block;
box-sizing: border-box;
font-size: 0;
box-shadow: inset 0 0 0 1px #ffffff;
padding-bottom: 33.33333333333%;
overflow: hidden;
position: relative;
}
.cube-inner {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.cube-box {
font-size: 0;
}
</style>
这是table版本的,嵌套的话也是需要absolute小盒子再嵌套一次。
<table>
<tbody>
<tr>
<td>`</td>
<td>`</td>
<td>`</td>
</tr>
<tr>
<td>`</td>
<td>`</td>
<td>`</td>
</tr>
<tr>
<td>`</td>
<td>`</td>
<td>`</td>
</tr>
<tr>
<td>`</td>
<td>`</td>
<td>`</td>
</tr>
</tbody>
</table>
tbody, table, tr {
width: 100%;
border-collapse: collapse;
}
tbody {
}
td {
padding-bottom: 33.33333333333%;
border: 1px solid crimson;
position: relative;
}
这是我经过各种微调后理想效果之一,但是还没到。
.cube {
width: 33.33333333333%;
display: inline-block;
box-sizing: border-box;
font-size: 0;
/*box-shadow: inset 0 0 0 1px #ffffff;*/
padding-bottom: 33.33333333333%;
overflow: hidden;
position: relative;
}
.text-mid{
display: grid;
align-items: center;
justify-items: center;
color: white;
box-sizing: border-box;
padding: 5px;
font-size: 1rem;
}
.cube-inner {
position: absolute;
top: 5px;
right: 5px;
bottom: 5px;
left: 5px;
}
.cube-inner-image{
object-fit: cover;
width: 100%;
border-radius: 10px;
overflow: hidden;
height: 100%;
}
.cube-box {
font-size: 0;
padding: 5px;
border:1px solid #42b983;
}
<div class="cube-box" style="width: 80%;margin: 0 auto">
<div class="cube ">
<div class="cube-inner">
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2121915427,2168624551&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666112400&t=36caa99d55237d803431ecaf4abbce96"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=476266673,1542201690&fm=253&fmt=auto&app=138&f=JPEG?w=270&h=185"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=464736753,4100005328&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=519"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2880576921,3981259860&fm=253&fmt=auto&app=138&f=JPEG?w=371&h=500"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=810480749,3476325787&fm=253&fmt=auto&app=138&f=JPEG?w=427&h=640"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=1561320362,1562554041&fm=253&fmt=auto&app=138&f=JPEG?w=336&h=512"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=1331722341,1941914216&fm=253&fmt=auto&app=138&f=JPEG?w=120&h=160"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=3914701278,356238033&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800"/>
</div>
</div>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2121915427,2168624551&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1666112400&t=36caa99d55237d803431ecaf4abbce96"/>
</div>
</div>
<div class="cube">
<div class="cube-inner text-mid">我的应用</div>
</div>
<div class="cube"> <div class="cube-inner text-mid">我的应用</div></div>
<div class="cube"> <div class="cube-inner text-mid">我的应用我的应用我的应用我的应用</div></div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=3914701278,356238033&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=934498461,73020862&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=700"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=3934080263,2967130006&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=933"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=780952297,1200937487&fm=253&fmt=auto&app=138&f=JPEG?w=224&h=305"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=3665616389,614777451&fm=253&fmt=auto&app=138&f=JPEG?w=490&h=600"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=476266673,1542201690&fm=253&fmt=auto&app=138&f=JPEG?w=270&h=185"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=464736753,4100005328&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=519"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=2880576921,3981259860&fm=253&fmt=auto&app=138&f=JPEG?w=371&h=500"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img0.baidu.com/it/u=810480749,3476325787&fm=253&fmt=auto&app=138&f=JPEG?w=427&h=640"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img1.baidu.com/it/u=1561320362,1562554041&fm=253&fmt=auto&app=138&f=JPEG?w=336&h=512"/>
</div>
</div>
<div class="cube">
<div class="cube-inner">
<img alt="" class="cube-inner-image" src="https://img2.baidu.com/it/u=1331722341,1941914216&fm=253&fmt=auto&app=138&f=JPEG?w=120&h=160"/>
</div>
</div>
</div>