首页 > 其他分享 >2024-10-24 瀑布流(vue3)

2024-10-24 瀑布流(vue3)

时间:2024-10-24 17:44:37浏览次数:8  
标签:10 img compress80 2024 uploads vue3 content

效果图:

 代码:

 

<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>

 

标签:10,img,compress80,2024,uploads,vue3,content
From: https://www.cnblogs.com/iuniko/p/18500037

相关文章

  • 拉普拉斯变换10.24
    目录1.拉普拉斯变换2.拉普拉斯收敛域3.导数的拉普拉斯变换推导过程5.传递函数6.电感电阻电路动态方程拉氏变换常数输入L逆变换7.控制系统传递函数8.非零初始状态的传递函数1.拉普拉斯变换\[\mathscr{L}[f(t)]=F(s)=\int^\infty_0f(t)e^{-st}dt\]$s=\sigma+j\ome......
  • 多校A层冲刺NOIP2024模拟赛12
    多校A层冲刺NOIP2024模拟赛12\(T1\)A.Alice和璀璨花\(65pts/65pts/65pts\)部分分测试点\(1\sim10\):设\(f_{i,j}\)表示前\(i\)位中生长趋势子序列长度为\(j\)时的末尾最小元素,然后进行暴力转移。测试点\(11\sim13\):观察到至多选择\(\left\lceil\log_......
  • 20241024比赛总结
    T1数位设\(dp_{i,0/1}\)表示前i位,最后一段是/不是d倍数的方案数令\(d=2^x5^ym\)可以将模d同余转化为模\(2^x\),\(5^y\),\(m\)分别同余因为\(2^{20}=1048576>10^6\)所以,当\(j<=i-20\)时,前两项的结果均为0所以首先可以开两个前缀和,求sum[i-1]*10+s[i]-'0'对前两项的取模结果......
  • 24.10.24
    A大家使用了整体二分+可撤销并查集,倍增等方法...考虑线段树合并。在跑Kruskal时,如果一个询问的两个点在同一个连通块内,那么这个询问就是可回答的,但是可回答不一定要回答,因为如果此后加的边权相同那么其实里面的点还能再往外走。所以在加边时如果新加的边权大于连通块边权,那......
  • 2024牛客暑期多校训练营9 B.Break Sequence
    设\(f_i\)表示最后一个区间以\(a_i\)结尾的方案总数,也即前\(i\)个数的方案总数。最后的答案是\(f_n\)。很容易得到转移方程:\[f_i=\sum_{j=1}^{i-1}f_j\]其中,需要保证\(a_i\sima_j\)是一个合法区间才能累加,这个检查的过程可以通过\(j\)倒序并计算不合法的数的个......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛12
    Rank挂了不少,还行A.Alice和璀璨花签。一眼最长上升子序列,昨天在AT专题里刚见过,不过赛时没想到离散化之后树状数组,所以打的动态开点,结果细节挂了30pts。和最长上升子序列思路基本一致,直接区间查询\([1,a_i-1]\)的最大值,然后在\(a_i\timesb_{f_i}\)插入\(f_i\)......
  • vue3入门教程,一站学会全套vue!
    vue3vue3作为前端重要的框架,学会vue可以让你更加了解前端。本博客致力于让你一站学会vue3的全部内容,从小白到高手。全是干货,准备好了吗?文章目录vue3创建工程文档结构核心语法模板语法插值语法指令语法无参指令有参指令自定义指令setupsetup函数setup语法糖响应式数......
  • 10.23 闲话
    10.23闲话图论复习还有2天就复赛了,现在暂时不知道做啥题了,写一下这两天复习的图论知识。1.存图方式(1.)邻接矩阵没什么好说的,最简单的存图方式,一眼就会。定义矩阵数组\(a[n][n](n为点的数量数)\),\(a[u][v]=w\)代表\(u,v\)之间存在一条权值为\(w\)的路径。由于采用......
  • 博客园 - 2024年10月24日之前使用的主题
     概览 配置01||基本设置02||代码高亮03||侧边栏公告04||页面定制CSS代码页面定制css代码/*动态星系*/@keyframesspin3D{from{transform:rotate3d(0.5,0.5,0.5,360deg)}to{transform:rotate3d(0deg)}}#loading{height:100%;background-color:#1d2630......
  • 抖音2024推文副业,欢迎来咨询
    不管钱多钱少,俗话说:苍蝇再少也是肉这个道理希望大家明白,想做就一起探讨,嫌少的也不用来了哈(只能做朋友,不能做副友),想做的欢迎来咨询(作者VX:GUAZI011492)想做收益多的可看这边文章(仅供参考)https://mp.weixin.qq.com/s?__biz=MzkxNTg0NDI4OA==&mid=2247483656&idx=1&sn=a948ff7d544......