Buefy 垂直缩略图轮播?
Buefy vertical thumbnails carousel?
当我使用 b-carousel
标签时,它可以正常工作,但缩略图是水平的。如何让它们垂直?
这是代码:
<template>
<b-carousel :indicator-inside="false">
<b-carousel-item v-for="(item, i) in 6" :key="i">
<span class="image">
<img :src="getImgUrl(i)">
</span>
</b-carousel-item>
<template slot="indicators" slot-scope="props">
<span class="al image">
<img :src="getImgUrl(props.i)" :title="props.i">
</span>
</template>
</b-carousel>
</template>
<script>
export default {
methods: {
getImgUrl(value) {
return `https://picsum.photos/id/43${value}/1230/500`
}
}
}
</script>
<style>
.is-active .al img {
filter: grayscale(0%);
}
.al img {
filter: grayscale(100%);
}
</style>
我想要的输出:
注意: 这个解决方案有一个缺点,它依赖于 b-carousel
的 CSS 实现细节,但这可能适合您的用例:
您可以使用 CSS 来设置 b-carousel
元素的样式:
.carousel
- 根容器
.carousel-indicator
- 缩略图容器(flex
项)
.indicator-item
- 每个缩略图项目
两列
Grid Layout could be most helpful in this case, as we essentially want a 2-column grid. This is done by applying display: grid
to the root container, and grid-template-columns: auto 25%
创建主图列和缩略图列:
.carousel {
display: grid;
grid-template-columns: auto 25%;
align-items: center;
}
垂直缩略图
Flexbox applies here. The thumbnail container is already using it, but it uses the default flex-flow
of row
(水平)。我们可以轻松地将其更改为 column
以使其垂直:
.carousel-indicator {
flex-direction: column;
}
缩略图边距
缩略图在元素之间有一个 margin-right
,旨在在水平图像之间提供视觉效果 space。由于我们将其切换为垂直布局,因此我们可以删除边距:
.indicator-item {
margin-right: initial !important;
}
当我使用 b-carousel
标签时,它可以正常工作,但缩略图是水平的。如何让它们垂直?
这是代码:
<template>
<b-carousel :indicator-inside="false">
<b-carousel-item v-for="(item, i) in 6" :key="i">
<span class="image">
<img :src="getImgUrl(i)">
</span>
</b-carousel-item>
<template slot="indicators" slot-scope="props">
<span class="al image">
<img :src="getImgUrl(props.i)" :title="props.i">
</span>
</template>
</b-carousel>
</template>
<script>
export default {
methods: {
getImgUrl(value) {
return `https://picsum.photos/id/43${value}/1230/500`
}
}
}
</script>
<style>
.is-active .al img {
filter: grayscale(0%);
}
.al img {
filter: grayscale(100%);
}
</style>
我想要的输出:
注意: 这个解决方案有一个缺点,它依赖于 b-carousel
的 CSS 实现细节,但这可能适合您的用例:
您可以使用 CSS 来设置 b-carousel
元素的样式:
.carousel
- 根容器.carousel-indicator
- 缩略图容器(flex
项).indicator-item
- 每个缩略图项目
两列
Grid Layout could be most helpful in this case, as we essentially want a 2-column grid. This is done by applying display: grid
to the root container, and grid-template-columns: auto 25%
创建主图列和缩略图列:
.carousel {
display: grid;
grid-template-columns: auto 25%;
align-items: center;
}
垂直缩略图
Flexbox applies here. The thumbnail container is already using it, but it uses the default flex-flow
of row
(水平)。我们可以轻松地将其更改为 column
以使其垂直:
.carousel-indicator {
flex-direction: column;
}
缩略图边距
缩略图在元素之间有一个 margin-right
,旨在在水平图像之间提供视觉效果 space。由于我们将其切换为垂直布局,因此我们可以删除边距:
.indicator-item {
margin-right: initial !important;
}