修改 Element UI 插件 Collapse 折叠面板,点击 icon 折叠展开,enter不能展开

一、使用场景

          用到 element ui 插件的Collapse 折叠面板,平常用也很方便,但是今天老大要求 只能点icon才能进行展开和折叠操作,插件是点击标题行就可以展开,今天就找到折叠面板的源码,希望可以帮助到遇到同问题的码兄
 

二、实现原理

          找到<el-collapse-item></el-collapse-item> 点它进入它的源码文件 名字叫 collapse-item.vue 的文件

// 源码
<div
   class="el-collapse-item__header"
   @click="handleHeaderClick"
   role="button"
   :id="`el-collapse-head-${id}`"
   :tabindex="disabled ? undefined : 0"
   @keyup.space.enter.stop="handleEnterClick"
   :class="{
     'focusing': focusing,
     'is-active': isActive
   }"
   @focus="handleFocus"
   @blur="focusing = false"
 >
   <slot name="title">{{title}}</slot>
   <i
     class="el-collapse-item__arrow el-icon-arrow-right"
     :class="{'is-active': isActive}">
   </i>
</div>

        找到 handleEnterClick 这个方法,给这个方法注释掉,因为它是按enter 或者空格 都会触发它,使用的时候很不爽
        找到@click事件里面的方法,把这个@clcik方法移动到  i  标签上面
        实现后会发现,i 标签可点范围太小,这个是时候更改一下 i 标签的大小继续OK了
        因为它是 flex 布局,所以改了大小后, 标题的比例就会缩小,我想到的方法是,使用两个 i 标签,小的(原来的)在下面占位,大的(我们自己更改后的)则定位在上面
       下面是我的代码

// html 部分
<div
        :id="`el-collapse-head-${id}`"
        class="el-collapse-item__header"
        role="button"
        :tabindex="disabled ? undefined : 0"
        :class="{
          'focusing': focusing,
          'is-active': isActive
        }"
        @keyup.space.enter.stop="handleEnterClick"
        @focus="handleFocus"
        @blur="focusing = false"
      >
        <slot name="title">{{ title }}</slot>
        <i
          class="el-collapse-item__arrow el-icon-arrow-right positionAbsolute"
          :class="{'is-active': isActive}"
          @click="handleHeaderClick"
        />
        <i
          class="el-collapse-item__arrow el-icon-arrow-right visibilityHidden"
          :class="{'is-active': isActive}"
          @click="handleHeaderClick"
        />
      </div>
// CSS部分
.positionAbsolute {
  position: absolute;
  right: 20px;
  width: 50px;
  height: 50px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.visibilityHidden{
  visibility: hidden;
}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值