我有一个分别带有标题和数据字段的Vuetify数据表,并且在props.item.name中我添加了一个v-icon,但是我只想将鼠标悬停在相应字段上时才显示该图标。默认情况下,它不会显示。
我在下面的代码中添加了脚本和HTML。
这是一个pen
任何帮助将不胜感激。
new Vue({
el: '#app',
data() {
return {
headers: [{
text: 'Dessert (100g serving)',
align: 'left',
sortable: false,
value: 'name'
},
{
text: 'Calories',
value: 'calories'
},
{
text: 'Fat (g)',
value: 'fat'
},
{
text: 'Carbs (g)',
value: 'carbs'
},
{
text: 'Protein (g)',
value: 'protein'
},
{
text: 'Iron (%)',
value: 'iron'
}
],
desserts: [{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0,
carbs: 24,
protein: 4.0,
iron: '1%'
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0,
carbs: 37,
protein: 4.3,
iron: '1%'
},
{
name: 'Eclair',
calories: 262,
fat: 16.0,
carbs: 23,
protein: 6.0,
iron: '7%'
},
{
name: 'Cupcake',
calories: 305,
fat: 3.7,
carbs: 67,
protein: 4.3,
iron: '8%'
},
]
}
}
})
<link href="https://cdn.jsdelivr.net/npm/vuetify@1.5.18/dist/vuetify.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/vuetify@1.5.18/dist/vuetify.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<v-app id="inspire">
<v-data-table :headers="headers" :items="desserts" class="elevation-1">
<template v-slot:items="props">
<td>{{ props.item.name }}
<v-icon right>cake</v-icon></td>
<td>{{ props.item.calories }}</td>
<td>{{ props.item.fat }}</td>
<td>{{ props.item.carbs }}</td>
<td>{{ props.item.protein }}</td>
<td>{{ props.item.iron }}</td>
</template>
</v-data-table>
</v-app>
</div>
答案 0 :(得分:3)
添加一个数据属性,例如c_index
(当前索引),当您将鼠标悬停在行上时,将悬停的索引分配给c_index
,并在鼠标离开时将其重置为-1:
<tr @mouseover="c_index=props.index" @mouseleave="c_index=-1">
并有条件地显示该图标:
<v-icon right v-show="props.index==c_index">cake</v-icon>
答案 1 :(得分:1)
在数据表v-hover
内使用v-slot:item.column_name
组件,您可以将道具通过其v-slot
,并按如下方式使用它:
<template v-slot:item.action="{ item }">
<v-hover v-slot:default="{ hover }">
<v-badge
:value="hover"
color="deep-purple accent-4"
content="First Button"
left
transition="slide-x-transition"
>
<v-icon>mdi-fountain-pen-tip</v-icon>
</v-badge>
</v-hover>
</template>
此外,您还可以将v-hover与css一起使用,但必须固定位置。 Full Demo
答案 2 :(得分:0)
您最好的选择是CSS
_在v-icon
悬停时:
.v-data-table .v-icon{visibility:hidden}
.v-data-table .v-icon:hover{visibility:visible}
_在td
容器上悬停
.v-data-table td .v-icon{visibility:hidden}
.v-data-table td:hover .v-icon:hover{visibility:visible}
这将影响模板中的所有v-icon
,更准确地说,将类添加到要隐藏的v-icon
s中。
...
<v-icon class="hidden" ... />
...
.hidden{visibility:hidden}
.hidden:hover{visibility:visible}
或
...
<td class="hidden" >
<v-icon ...>
...
</td>
...
.hidden .v-icon{visibility:hidden}
.hidden:hover .v-icon{visibility:visible}