VantUI_van-tabs_active属性使用无效踩坑记录

作者在使用van-tabs组件时遇到问题,当active属性设置为默认字符串0时,内容丢失且无法自动切换。解决办法是将active转换为数值类型并利用change事件实时更新,避免二次触发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文档中显示属性值可以为字符或者数值在这里插入图片描述

但是实际上在使用过程中,我给active添加了默认数值0以及字符串的’0’
设置默认字符串’0’,van-tabs的下滑线可以正常停留在索引0的位置,但是van-tab的内容出现丢失。
后续更改active的属性值页面都没有效果。同时切换页面的tab栏也没有引起active的变化。
设置默认值为数字0,则一切正常显示。

因此我在希望更改视图时,需要将active强转为数值类型的才影响到视图。
同时因为操作视图时不会同时更改active的值,需要使用bind:change
在这里插入图片描述
通过事件对象中的e.detail.index 拿到当前激活的tab栏索引下标实时更新active的值,但为了避免二次触发更新我没有进行强转只是将值记录到了active中。
在这里插入图片描述
在我的业务刚进来的时候指定激活的active时进行强转成数值类型数据触发视图更新
在这里插入图片描述

### 修改 `.el-tabs__item.is-disabled` 状态下 `.el-tabs__active-bar` 的颜色 在 Element UI 中,`.el-tabs__active-bar` 是用于指示当前激活的标签栏的元素。当需要修改 `.el-tabs__item.is-disabled` 状态下的 `.el-tabs__active-bar` 颜色时,可以通过自定义 CSS 样式实现。以下是一个解决方案: #### 自定义样式覆盖默认样式 由于 `.el-tabs__active-bar` 的颜色是由父级标签的状态决定的,因此需要通过更具体的 CSS 选择器来覆盖默认样式。以下是代码示例: ```css /* 覆盖 .el-tabs__item.is-disabled 状态下的 .el-tabs__active-bar 颜色 */ .el-tabs__nav .el-tabs__item.is-disabled + .el-tabs__active-bar { background-color: gray !important; /* 设置为灰色 */ } ``` 上述代码中,`+` 选择器用于定位 `.el-tabs__item.is-disabled` 后面紧邻的 `.el-tabs__active-bar` 元素,并将其背景颜色设置为灰色。需要注意的是,Element UI 的样式可能具有较高的优先级,因此使用了 `!important` 来确保样式生效[^1]。 #### 注意事项 - 如果 `.el-tabs__active-bar` 并未直接跟随在 `.el-tabs__item.is-disabled` 后,则需要根据实际 DOM 结构调整选择器。 - 在某些情况下,`.el-tabs__active-bar` 的位置和颜色可能依赖于其他状态(如 `.is-active`),因此需要进一步检查具体的行为逻辑。 #### Vue 组件中的应用 如果需要动态修改样式,可以在 Vue 组件中通过 `style` 或 `class` 动态绑定实现: ```vue <template> <el-tabs v-model="activeTab" class="custom-tabs"> <el-tab-pane label="选项一" name="first" :disabled="isDisabled">选项一内容</el-tab-pane> <el-tab-pane label="选项二" name="second">选项二内容</el-tab-pane> </el-tabs> </template> <script> export default { data() { return { activeTab: 'first', isDisabled: true }; } }; </script> <style scoped> .custom-tabs .el-tabs__nav .el-tabs__item.is-disabled + .el-tabs__active-bar { background-color: gray !important; } </style> ``` 上述代码中,`custom-tabs` 类名用于限定样式的作用范围,避免全局污染[^1]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值