vue使用elementui中tabs组件出现的问题

本文介绍了在Vue项目中使用ElementUI的Tabs组件时遇到的焦点样式问题,以及如何通过自定义CSS样式来消除不需要的box-shadow,设置合适的border-radius,实现预期的视觉效果。
摘要由CSDN通过智能技术生成

vue使用elementui中tabs组件出现的问题

在这里插入图片描述

解决后的效果

在这里插入图片描述

解决方法(从写效果)

.el-tabs__item:focus.is-active.is-focus:not(:active) {
    box-shadow: none !important;
    border-radius: 3px;
}
这个异常通常是由于某个元素的ResizeObserver回调函数在执行时又改变了面元素的大小,从而触发了ResizeObserver的回调函数,进入了一个死循环,导致异常的出现。 在Vue3使用tabs时,通常是通过动态切换多个子组件来实现的,而每个子组件都有可能会触发ResizeObserver回调函数。因此,为了避免出现上述异常,可以尝试以下几个方法: 1. 在每个子组件的销毁钩子,手动断开ResizeObserver的观察器。例如: ```javascript export default { mounted() { const observer = new ResizeObserver(this.handleResize); observer.observe(this.$el); this.observer = observer; }, beforeUnmount() { this.observer.disconnect(); }, methods: { handleResize() { // 处理元素大小变化 } } } ``` 这样,每次切换到一个新的子组件时,旧的子组件会被销毁,同时也会断开其ResizeObserver的观察器,避免回调函数的死循环。 2. 在使用tabs的父组件,只渲染当前选的子组件,其他子组件则不渲染。例如: ```javascript <template> <div> <div class="tab-header"> <!-- 渲染tab头部 --> </div> <div class="tab-content"> <component :is="currentTab"></component> </div> </div> </template> <script> export default { data() { return { currentTab: 'tab1' } } // ... } </script> ``` 这样,每次切换到一个新的子组件时,旧的子组件会被销毁,同时也不会触发其ResizeObserver的回调函数。 3. 使用第三方组件tabs组件,例如ElementUI、Ant Design等,这些组件库通常已经考虑了ResizeObserver的问题,并且提供了可靠的解决方案。 以上是几种解决方案,具体选择哪一种取决于业务需求和开发成本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端大冤种

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值