vue中tab隐藏display:none(v-show无效,v-if有效)

52 篇文章 14 订阅
10 篇文章 0 订阅

目录

背景

原因:display: table-cell>display:none

解决:

方法A.获取元素设置display(适用于 简单场景)

方法B.自定义tabs​​​​​​​ (适用于 复杂场景)


背景

  • 内联样式(style=“ ”)   /this.$refs.tabs.$children[1].$el.style.display = ''都无效
  • v-if能动态创建,当点击tab时才会消失,active状态时点击也不能消失,说明是缺乏渲染同步?,但是设置为同步渲染,v-if却失效了
  • v-for、动态pop、push在matrix中不生效,也不适用大组件
  • 单个tab、动态pop、push在matrix不生效
  • keepalive只适用于初始就显示所有的,后来才需要隐藏

原因:display: table-cell>display:none

编译前和运行时标签不同

martix

解决:

方法A.获取元素设置display(适用于 简单场景)

  checkboxChange() {

    // martixs
    const tabs = document.querySelectorAll('.mds-tabs-tab');//NodeList
    const firstTab = tabs[0] as HTMLElement; // 将元素类型指定为 HTMLElement
    if (firstTab.style.display == 'none') {
      firstTab.style.display = 'block';
    } else {
      firstTab.style.display = 'none';
    }

    console.log(tabs);

    const tabsArray = [...tabs];//arry
    console.log(tabsArray);
    //element

    for (const dataType of this.formData.moduleDataType) {
      console.log("dataType:", dataType);
      console.log(this.$refs.tabs.$children[0].$el.style)
    }
  }

方法B.自定义tabs​​​​​​​ (适用于 复杂场景)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值