效果
源码
<template>
<div class="container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</template>
<style scoped>
.container {
--width: 150px;
--gap: 10px;
--scale: 1.5;
--elnum: 4;
display: grid;
gap: var(--gap);
/* 列宽度+间距 */
width: calc(var(--elnum) * var(--width) + (var(--elnum) - 1) * var(--gap));
/* 纵横比 */
aspect-ratio: 1;
/* 规定网格布局中的列数(和宽度) */
grid-template-columns: repeat(var(--elnum), auto);
}
.container>div {
width: 0;
height: 0;
min-width: 100%;
min-height: 100%;
/* 指定元素的内容应该如何去适应指定容器的高度与宽度 */
object-fit: contain;
cursor: pointer;
background: #feac5e;
background: -webkit-radial-gradient(#feac5e, #c779d0, #4bc0c8);
background: radial-gradient(#feac5e, #c779d0, #4bc0c8);
transition: all 0.3s;
}
.container>div:hover {
width: calc(var(--width) * var(--scale));
height: calc(var(--width) * var(--scale));
background: #00c3ff;
background: -webkit-radial-gradient(#00c3ff, #f56217, #ffff1c);
background: radial-gradient(#00c3ff, #f56217, #ffff1c);
}
</style>