2024-10-24 瀑布流(vue3)

news/2024/10/24 17:48:15

效果图:

 代码:

 

<template><div id="waterfallContainer" class="waterfall-container"><div v-for="(column, columnIndex) in columns" :key="columnIndex" class="waterfall-column"><div v-for="(item, index) in column" :key="item.src" class="waterfall-box"><img :src="item.src" :alt="item.alt" class="waterfall-box-img" /></div></div></div>
</template><script>
export default {name: 'wfBox',
};
</script><script setup>
import { ref, onMounted, onUnmounted, reactive, computed } from 'vue';const items = ref([{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410241144-1al.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410241141-w5j.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410241136-7g2.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410181836-1u4.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410220732-rbx.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410181343-qb7.png-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410170337-gm2.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410180531-qm2.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410180928-a1h.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410231720-qhe.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410210850-80j.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410171644-ff8.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410170324-3h8.jpg-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410180526-lrg.webp-compress80',},{        src: 'https://img.thetigerhood.com/wp-content/uploads/2024/10/2410131545-jls.jpg-compress80',}
]);const columnsCount = ref(4); // 列数  
const columnHeights = ref(Array(columnsCount.value).fill(0)); // 每列的高度  // 根据当前列高度找到最低高度的列索引  
const findShortestColumn = () => {let minHeight = Infinity;let columnIndex = 0;for (let i = 0; i < columnHeights.value.length; i++) {if (columnHeights.value[i] < minHeight) {minHeight = columnHeights.value[i];columnIndex = i;}}return columnIndex;
};// 将图片分配到列中  
const distributeItems = () => {const columns = Array.from({ length: columnsCount.value }, () => []);items.value.forEach(item => {const columnIndex = findShortestColumn();columns[columnIndex].push(item);columnHeights.value[columnIndex] += 200; // 假设每张图片的高度为200px(这里需要动态计算或设置实际高度)  
    });return columns;
};const columns = computed(() => distributeItems());onMounted(() => {window.addEventListener('resize', () => {columnsCount.value = Math.floor(window.innerWidth / 200); // 假设每列宽度为200px(需要调整)  columnHeights.value = Array(columnsCount.value).fill(0);});
});onUnmounted(() => {window.removeEventListener('resize', () => { });
});
</script><style scoped>
.waterfall-container {display: flex;flex-wrap: wrap;gap: 0;margin-top: 12px;padding: 0;box-sizing: border-box;
}.waterfall-column {flex: 1 0 calc(20% - 16px);/* 假设5列,每列宽度为20%,减去gap */box-sizing: border-box;
}.waterfall-box {width: 100%;box-sizing: border-box;cursor: pointer;
}.waterfall-box-img {width: 100%;height: auto;display: block;
}/* 响应式布局调整 */
@media (max-width: 1200px) {.waterfall-column {flex: 1 0 calc(25% - 16px);/* 4列 */}
}@media (max-width: 768px) {.waterfall-column {flex: 1 0 calc(50% - 16px);/* 2列 */}
}@media (max-width: 480px) {.waterfall-column {flex: 1 0 100%;/* 1列 */}
}
</style>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/75547.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

如何用反射调用泛型类的方法

例子一:泛型类不含构造函数using System; using System.Reflection;namespace 使用反射调用泛型类的方法 {class Program{static void Main(string[] args){//定义要使用的类型参数(就是调用方法时要传入的参数类型,例如int)Type genericTypeArgument = typeof(int);//获取…

IDEA运行不了代码

同样的代码在eclipse可以正常运行,创建的方法也保持一样,为什么在IDEA就报错,本人是小白看不懂下面的报错

扩展被恢复分区挡住的 C 盘

之前装系统的时候想着以后要不要装个 Ubuntu 以作备用,所以给 SSD 分区的时候留了一小部分,没有全分给 C 盘。结果后来用 WSL 用得乐不思蜀了,觉得剩下的空间留着没必要,于是想把剩下的空间扩容给 C 盘。结果操作的时候发现 C 盘后面跟了一个恢复分区!无法给 C 盘扩容了。…

若依开启注册功能

若依开启用户注册功能 1、修改数据库,如下:2、修改前端:参考鸣谢: https://blog.csdn.net/weixin_43684214/article/details/121609310

OCR视图识别(Tess4J)

1.概述 图片文字识别 OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程 2.Tess4j快速入门 1.导入依赖<dependencies><…

『模拟赛』多校A层冲刺NOIP2024模拟赛12

『模拟赛记录』多校A层冲刺NOIP2024模拟赛12Rank 挂了不少,还行A. Alice 和璀璨花 签。 一眼最长上升子序列,昨天在 AT 专题里刚见过,不过赛时没想到离散化之后树状数组,所以打的动态开点,结果细节挂了 30pts。 和最长上升子序列思路基本一致,直接区间查询 \([1,a_i-1]\)…

分享一些利用商品详情数据挖掘潜在需求的成功案例

以下是一些利用商品详情数据挖掘潜在需求的成功案例: 一、亚马逊的个性化推荐系统:案例背景:亚马逊是全球知名的电商平台,拥有海量的商品和庞大的用户群体。为了提高用户的购物体验和增加销售额,亚马逊投入大量资源开发个性化推荐系统。 数据挖掘过程:亚马逊通过分析用户…