我目前正在使用v-navigation-drawer创建一个侧边导航。我的大多数项目使用图标,但我想创建一些自定义行为了。遗憾的是,v-slot:title中的标题与使用prepend-icon的v-list-item中的标题不一致。我如何才能做到这一点。
<v-navigation-drawer
location="left"
width="250"
permanent
>
<v-list>
<v-list-item prepend-icon="mdi-account" title="Profile" to="/profile"></v-list-item>
<v-list-item prepend-icon="mdi-email-fast" title="Feedback" to="/feedback"></v-list-item>
<v-list-item>
<template v-slot:prepend>
<v-progress-circular
model-value="30"
size="25"
color="deep-orange-lighten-2"
></v-progress-circular>
</template>
<template v-slot:title>
Progress
</template>
</v-list-item>
</v-list>
</v-navigation-drawer>
1条答案
按热度按时间chy5wohz1#
为了解决这样的问题,我将检查DOM并比较标准的prepend元素和v-slot前置元素。当使用v-slot时,所有内容都被替换,所以关键是要弄清楚当使用vs.不使用V形槽。
安装
标准的prepend元素看起来像这样:
prepend v-slot看起来更像这样:
将
<i>
元素中的类添加到<v-progress-circular>
中可以解决间距问题。不过,这样做还可以添加其他样式。通过研究CSS或者一次删除一个类,我们可以将其缩小到只需要“v-icon”类的v-progress-circular。这个类的实际效果是在
v-list-item__spacer
div上设置width: 32px
。如果你在你的自定义v-slot中检查v-list-item__spacer
,你会看到宽度是0,直到你添加“v-icon”类。你可能不想要所有其他的样式都带有“v-icon”,所以你可以离开这个类,只应用32 px。为此,请添加一个自定义类,例如“customPrepend”到你的一个v-list-item,这样你就可以为必要的CSS提供一个选择器。
解决方案
Vuetify Playground示例