修改vant框架组件,实现tab组件增加自定义事件

本文档介绍如何在Vue的vant框架中为Tab标签页组件添加一个偏好设置按钮,同时保持组件原有功能。通过修改样式,利用事件冒泡实现点击事件,解决滚动时class名变化的问题。在不直接修改组件结构的情况下,成功实现了需求。
摘要由CSDN通过智能技术生成

修改vant框架中的Tab标签页组件

在使用vant组件中,项目需要我们把框架的组件修改,加多一个按钮,用做用户的偏好设置
需求:要求按钮不能影响组件的欢动效果,并且也要拥有组件的粘性定位布局
在这里插入图片描述
组件:在这里插入图片描述

我们修改框架组件是很麻烦的事情,vue的vant 不能直接修改组件结构,所以我们不会使用修改结构的方法,修改标签的数据也会很麻烦,所以我们直接选择修改组件样式
在这里插入图片描述
页面检测元素,我们发现可以给van-sticky一个padding-right样式(先给空间),再给它一个伪类元素,把加号显示出来

.index {
//这里我使用了深度选择器
  /deep/.van-sticky {
    padding-right: 40px;
    &::after {
      content: "+";
      width: 40px;
      height: 44px;
      position: absolute;
      right: 0;
      top: 0;
      font-size: 30px;
      color: #333;
      text-align: center;
      background-color: #fff;
      line-height: 38px;
    }
  }

在这里插入图片描述

修改了样式可以有了显示没有问题,之前的功能也没有问题了!
我们要怎么添加事件?伪元素是不能直接添加事件的
这里我们要转变一下想法,利用事件冒泡的作用,当我点击其他标签页的时候都有其他的样式,只有我点击加号的时候我的样式名是van-sticky

在这里插入图片描述

我这里就直接用原生的js代码在vue组件里面写了

//在钩子函数里面写一个原生方法
mounted() {
 document.querySelector(".van-sticky").onclick = (e) => {
      console.log(e.target.className);
      if (e.target.className==="van-sticky") {
        this.$router.push({ name: "categoryMannager" });
      }
    };
  },

这样就能实现点击
但是还发现一个问题,如果页面下来,van-sticky 的class名会改变
在这里插入图片描述
最终实现 我们需要
我这里就直接用原生的js代码在vue组件里面写了

//在钩子函数里面写一个原生方法
mounted() {
 document.querySelector(".van-sticky").onclick = (e) => {
      console.log(e.target.className);
      if (e.target.className.indexOf("van-sticky") > -1) {
        this.$router.push({ name: "categoryMannager" });
      }
    };
  },

这样我们就能滚动也能点击了,这个小坑也填了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值