vue.js - 单击时如何使带有图像的 v-card 展开以显示图像描述?
问题描述
如何使带有图像的 v-card (Vuetify) 在单击时展开以显示图像描述?
例子:
<v-card>
<v-img src = "URL" @click ="do something"> </v-img>
<v-card toggle = "true">
Image Description shown when clicked
</v-card?
</vcard>
解决方案
希望这是您想到的codepen。我将把剩下的微调留在你手中。
Html:
<v-flex
v-for="card in cards"
v-bind="{ [`xs${card.flex}`]: true }"
:key="card.title"
>
<v-card>
<v-img
:src="card.src"
height="200px"
@click="card.showDetails = !card.showDetails"
>
</v-img>
<v-card-actions v-show="card.showDetails">
{{card.description}}
</v-card-actions>
</v-card>
</v-flex>
js:
new Vue({
el: '#app',
data: () => ({
cards: [
{ title: 'Pre-fab homes', src: 'https://picsum.photos/800/800', flex: 6, description: "Random Image", showDetails: false },
{ title: 'Pre-fab homes', src: 'https://cdn.vuetifyjs.com/images/cards/house.jpg', flex: 6, description: "House Image", showDetails: false },
{ title: 'Favorite road trips', src: 'https://cdn.vuetifyjs.com/images/cards/road.jpg', flex: 6, description: "Road Image", showDetails: false },
{ title: 'Best airlines', src: 'https://cdn.vuetifyjs.com/images/cards/plane.jpg', flex: 6,description: "Plane Image", showDetails: false }
]
})
})
完整示例
new Vue({
el: '#app',
data: () => ({
cards: [{
title: 'Pre-fab homes',
src: 'https://picsum.photos/800/800',
flex: 6,
description: "Random Image",
showDetails: false
},
{
title: 'Pre-fab homes',
src: 'https://cdn.vuetifyjs.com/images/cards/house.jpg',
flex: 6,
description: "House Image",
showDetails: false
},
{
title: 'Favorite road trips',
src: 'https://cdn.vuetifyjs.com/images/cards/road.jpg',
flex: 6,
description: "Road Image",
showDetails: false
},
{
title: 'Best airlines',
src: 'https://cdn.vuetifyjs.com/images/cards/plane.jpg',
flex: 6,
description: "Plane Image",
showDetails: false
}
]
})
})
<script src="https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.4.0/dist/vuetify.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons">
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/vuetify@1.4.0/dist/vuetify.min.css">
<div id="app">
<v-app id="inspire">
<v-layout justify-center>
<v-flex xs12 sm6>
<v-card>
<v-container fluid grid-list-md>
<v-layout row wrap>
<v-flex v-for="card in cards" v-bind="{ [`xs${card.flex}`]: true }" :key="card.title">
<v-card>
<v-img :src="card.src" height="200px" @click="card.showDetails = !card.showDetails">
</v-img>
<v-card-actions v-show="card.showDetails">
{{card.description}}
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-card>
</v-flex>
</v-layout>
</v-app>
</div>
推荐阅读
- json - 在 ASP.NET Core 中使用 JsonPatch 将项目添加到字典
- typescript - typescript return null found 模式问题
- wolfram-mathematica - 如何在mathematica中列出元组及其各自的平均值?
- python-3.x - 使用python3将netCDF文件转换为数据框
- vue.js - () => {} 在图像的 vue 道具中是什么意思?
- git - 如何计算作者在 git 中两个版本之间更改的行数?
- android - startActivity(intent) 在 Firebase onDataChange() 中不起作用
- firebase - 尝试获取文档 ID 时出错
- mongodb - 转换文档数组中的字段
- java - 应用程序上下文无故关闭