Skip to content

图片瀑布流(媒体感知)

开启 with-media 后,组件会等待每张图片加载完成。

查看源码
vue
<template>
    <MasonryWall :items="items" :columns="3" :gap="12" :with-media="true" :media-timeout="10000">
        <template #default="{ item }">
            <div class="card">
                <img :src="item.url" class="card-img" alt="" />
                <div class="card-body">
                    <div class="card-title">{{ item.title }}</div>
                    <div class="card-desc">{{ item.desc }}</div>
                </div>
            </div>
        </template>
    </MasonryWall>
</template>

<script setup lang="ts">
import { MasonryWall } from "@punish/masonry-wall";

interface PhotoItem {
    url: string;
    title: string;
    desc: string;
}

const items: PhotoItem[] = [
    { url: "https://picsum.photos/seed/rox1/300/200", title: "山间晨雾", desc: "清晨的山谷被薄雾笼罩" },
    { url: "https://picsum.photos/seed/rox2/300/420", title: "都市霓虹", desc: "夜幕下的城市灯火" },
    { url: "https://picsum.photos/seed/rox3/300/300", title: "海岸线", desc: "潮起潮落的海边" },
    { url: "https://picsum.photos/seed/rox4/300/520", title: "林间小径", desc: "阳光穿过树叶的缝隙" },
    { url: "https://picsum.photos/seed/rox5/300/240", title: "湖心倒影", desc: "平静湖面的对称之美" },
    { url: "https://picsum.photos/seed/rox6/300/380", title: "雪山之巅", desc: "高海拔的纯净世界" },
    { url: "https://picsum.photos/seed/rox7/300/260", title: "麦田黄昏", desc: "风吹麦浪的金色海洋" },
    { url: "https://picsum.photos/seed/rox8/300/460", title: "星空银河", desc: "无光害下的璀璨星河" },
    { url: "https://picsum.photos/seed/rox9/300/320", title: "老城巷弄", desc: "斑驳墙壁讲述旧时光" },
];
</script>

<style scoped>
.card {
    background: #fff;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}
.card-img {
    width: 100%;
    display: block;
    object-fit: cover;
    background: #eee;
}
.card-body {
    padding: 10px 12px 14px;
}
.card-title {
    font-size: 14px;
    font-weight: 600;
    color: #1f2329;
}
.card-desc {
    margin-top: 4px;
    font-size: 12px;
    color: #8a919f;
}
</style>

基于 MIT 协议开源