上效果
知识理解
column-count: 4; column-gap: 15px;实现固定四行瀑布流布局
columns: 200px auto;column-gap: 15px;由浏览器根据容器的宽度自动调整,尽可能一行多个200px宽度的列数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>瀑布流布局示例</title>
<style>
.container {
/* 设置列间距 */
column-gap: 15px;
/* column-count: 4; 固定列数 */
/* 设置列宽和列数(列的数量由浏览器根据容器的宽度自动调整) */
/* 设置列数 */
columns: 300px auto;
/* 禁用文本选择 */
user-select: none;
}
.item {
/* break-inside 用于控制元素是否可以在页面、列或区域的边界处被分割 */
/* 当设置为 avoid 时,浏览器会尝试避免将元素的内容分割到不同的页面、列或区域中。这意味着整个元素内容尽可能保持在同一页面、列或区域内 */
break-inside: avoid;
/* Safari 浏览器 */
-webkit-column-break-inside: avoid;
/*老版本浏览器 用于控制元素是否可以在页面、列或区域的边界处被分割*/
page-break-inside: avoid;
margin-bottom: 15px;
}
.item img {
width: 100%;
border-radius: 8px;
display: block;
}
</style>
</head>
<body>
<div id="app">
<div class="container">
<div class="item" v-for="(item, index) in list" :key="index">
<img :src="`https://picsum.photos/${item}`" alt="随机图片">
</div>
</div>
</div>
<!-- 引入Vue库 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
const app=new Vue({
el: '#app',
data () {
return {
list: [
"290/320",
"190/370",
"290/330",
"250/410",
"230/380",
"260/370",
"210/430",
"290/310",
"430/310",
"390/440",
"430/310",
"390/440",
"390/440",
]
};
}
});
</script>
</body>
</html>