【发布时间】:2021-01-19 18:48:58
【问题描述】:
我有一个图片库,图片大小不一(不断变化)。我希望能够将图像卡向上移动到上面图像卡的正下方。
但是,图像保持日期顺序非常重要。我尝试过的解决方案都改变了顺序。它们主要涉及使用 flex 按列排序,这会产生以下结果:
1 4 7
2 5
3 6
我还想要:
1 2 3 4
5 6 7
有没有办法做到这一点,最好是在 CSS Grid 中,但我可以在必要时使用 flexbox,而且它不会影响排序。
我现在的造型很简单:
.cards-container-not-home {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
顺序由日期描述决定。图像在上传时与时间戳一起存储。然后我调用 firebase 并按日期顺序将它们取回并将它们推送到一个数组中:
let picturesData = [];
let snapshot = await db
.collection(collection)
.orderBy("timestamp", "desc")
.get();
snapshot.forEach((doc) => {
let appData = doc.data();
appData.id = doc.id;
picturesData.push(appData);
});
return picturesData;
我遍历数组,然后执行 v-for 循环以按 desc 日期顺序将图像卡打印到页面。
这是模板:
<template>
<div v-bind:class="{ 'cards-container-not-home': notHome }">
<div v-for="data in imageData" :key="data.id">
<div class="card">
<img :src="data.source" :alt="data.caption" class="card-img" />
<div class="text-box">
<p>{{ moment(data.timestamp.toDate()).format("MMM Do YYYY") }}</p>
<p>{{ data.caption }}</p>
<Geolocation v-bind:address="data.location" />
</div>
</div>
</div>
</div>
</template>
【问题讨论】:
-
您提供的代码不足以理解如何解决问题。例如。 “图像保持日期顺序非常重要”您使用什么代码按日期对图像进行排序?是 JS 吗?
-
@AryanBeezadhur 将编辑我的帖子以显示 JS。
-
你能上传一些HTML代码吗?
-
@DMCISSOKHO 添加了我的 vue 模板
标签: html css vue.js flexbox css-grid