van-tabbar-item选中后背景颜色改成透明色
时间: 2023-08-04 13:08:22 浏览: 183
可以通过设置 `van-tabbar-item` 组件的 `custom-class` 属性来自定义样式,然后在对应的样式文件中添加以下代码来实现选中后背景颜色改成透明色:
```css
.van-tabbar-item--active {
background-color: transparent;
}
```
注意,这样设置会将选中状态下的背景色设置为透明色,如果你想改变未选中状态下的背景色,可以设置 `.van-tabbar-item` 的背景色。
相关问题
<template> <div> <router-view /> <van-tabbar v-model="active"> <van-tabbar-item icon="home-o" to="/home">首页</van-tabbar-item> <van-tabbar-item icon="shopping-cart-o" to="/shopcar" >购物车</van-tabbar-item > <van-tabbar-item icon="friends-o">我的</van-tabbar-item> </van-tabbar> </div> </template> <script> export default { data() { return { active: 0, }; }, methods: {}, watch: { // active() { // if (this.active == 0) { // this.$router.push("/home"); // } else if (this.active == 1) { // this.$router.push("/shopcar"); // } // }, }, }; </script> <style scoped> .van-tabbar-item--active { color: red; } </style>为什么跳转到购物车不会高亮显示呢
在代码中,购物车页面对应的 `van-tabbar-item` 组件并没有设置 `to` 属性,而是直接作为静态内容呈现在了 `van-tabbar` 中。因此,当路由切换到购物车页面时,虽然 URL 已经匹配到了 `/shopcar`,但是 `van-tabbar-item` 组件并没有被激活,因此也就无法显示高亮样式。
要解决这个问题,可以将购物车页面对应的 `van-tabbar-item` 组件的 `to` 属性设置为 `/shopcar`,这样在路由切换到购物车页面时,对应的 `van-tabbar-item` 组件就会被激活,并显示高亮样式。修改后的代码如下所示:
```html
<van-tabbar-item icon="shopping-cart-o" to="/shopcar">购物车</van-tabbar-item>
```
<template> <div> <van-nav-bar title="商品列表"> <template #left> <van-icon name="arrow-left" size="20px" color="black" @click="returnFn" /> </template> <template #right> <van-icon v-if="show" name="bars" color="black" size="20px" @click="changeFn" /> <van-icon v-else name="apps-o" color="black" size="20px" @click="changeFn" /> </template> </van-nav-bar> <div class="line"> <van-tabbar v-model="active" :fixed="false" active-color="#d81e06"> <van-tabbar-item> <van-dropdown-menu> <van-dropdown-item v-model="value" :options="option1" @change="sortPrice" /> </van-dropdown-menu ></van-tabbar-item> <van-tabbar-item class="big" name="have">有货优先</van-tabbar-item> <van-tabbar-item class="big" name="direct">直营优先</van-tabbar-item> </van-tabbar> </div> <goods-colum v-if="show" :goodsList="goodsList"></goods-colum> <goods-list v-else :goodsList="goodsList"></goods-list> </div> </template>这段代码怎么实现点击有货优先筛选出有货的商品
这段代码中点击有货优先并不会筛选出有货的商品,需要在点击事件中添加筛选逻辑。可以在点击有货优先时,通过修改 `goodsList` 数组,重新渲染商品列表来实现筛选,例如:
1. 在 `data` 中添加 `isHaveGoods` 状态,初始值为 `false`。
2. 在点击有货优先时,将 `isHaveGoods` 状态设为 `true`。
3. 在渲染商品列表时,只渲染有货的商品。
修改后的代码如下:
```
<template>
<div>
<van-nav-bar title="商品列表">
<template #left>
<van-icon
name="arrow-left"
size="20px"
color="black"
@click="returnFn"
/>
</template>
<template #right>
<van-icon
v-if="show"
name="bars"
color="black"
size="20px"
@click="changeFn"
/>
<van-icon
v-else
name="apps-o"
color="black"
size="20px"
@click="changeFn"
/>
</template>
</van-nav-bar>
<div class="line">
<van-tabbar v-model="active" :fixed="false" active-color="#d81e06">
<van-tabbar-item>
<van-dropdown-menu>
<van-dropdown-item
v-model="value"
:options="option1"
@change="sortPrice"
/>
</van-dropdown-menu>
</van-tabbar-item>
<van-tabbar-item
class="big"
name="have"
@click="isHaveGoods = true"
>
有货优先
</van-tabbar-item>
<van-tabbar-item class="big" name="direct">直营优先</van-tabbar-item>
</van-tabbar>
</div>
<goods-colum v-if="show" :goodsList="filteredGoodsList"></goods-colum>
<goods-list v-else :goodsList="filteredGoodsList"></goods-list>
</div>
</template>
<script>
export default {
data() {
return {
// 是否有货
isHaveGoods: false,
// 商品列表
goodsList: [],
// 筛选后的商品列表
filteredGoodsList: [],
// ...
};
},
methods: {
// 点击有货优先时的回调函数
isHaveGoodsChanged() {
if (this.isHaveGoods) {
// 只保留有货的商品
this.filteredGoodsList = this.goodsList.filter(
(item) => item.isHaveGoods
);
} else {
this.filteredGoodsList = this.goodsList;
}
},
// ...
},
};
</script>
```
阅读全文