【折叠面板】点击ElementUI collapse 上的标题时面板不响应折叠/展开

1.点击组件的标题时控制面板不展开,点击右侧箭头面板展开。

方法一:可以通过样式去控制

<style lang="scss" scoped>

  :deep(.el-collapse-item__header) {

    pointer-events: none;

  }

  :deep(.el-collapse-item__arrow) {

    pointer-events: auto;

  }

</style>

2.折叠面板标题加按钮,点击不让面板展开。

方法一:加事件冒泡阻止

<template>
  <div class="demo-collapse">
    <el-collapse v-model="activeNames" @change="handleChange">
      <el-collapse-item  name="1">
        <template v-slot:title>
               不展开 <el-button type="primary" @click.stop.prevent=handle()>点击不展开</el-button>
                  </template>
        <div>
          Consistent with real life: in line with the process and logic of real
          life, and comply with languages and habits that the users are used to;
        </div>
        <div>
          Consistent within interface: all elements should be consistent, such
          as: design style, icons and texts, position of elements, etc.
        </div>
      </el-collapse-item>
    </el-collapse>
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
const activeNames = ref(['1'])
const handleChange = (val: string[]) => {
  console.log(val)
}
const handle=()=>{
  console.log('点击头部')
}
</script>

3.隐藏右侧箭头,且改变箭头方向。

<style lang="scss" scoped> 
 :deep(.el-collapse-item__arrow) {

     pointer-events: auto;//显示
     display: none;//隐藏icon
    transform: rotate(270deg); /* 修改箭头方向 */


  }
  :deep(.el-collapse-item__arrow.is-active ){
    transform: rotate(90deg);/* 修改箭头方向 */
}
</style>

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
折叠面板怎么实现关闭? 可以在elementui折叠面板的属性中使用 v-for 循环渲染多个折叠面板,并给每个面板设置一个唯一标识符。然后,在点某个折叠面板,通过遍历全部折叠面板的方式,判断除当前被点折叠面板之外的其他折叠面板是否处于打开状态,若处于打开状态,则通过元素的 ref 属性调用关闭面板的方法,实现其他折叠面板的关闭。以下是示例代码: <template> <el-collapse v-model="activeNames" accordion> <el-collapse-item v-for="(item, index) in items" :key="item.id" :title="item.title" :name="item.id"> <p>{{ item.content }}</p> </el-collapse-item> </el-collapse> </template> <script> export default { data() { return { activeNames: [], // 当前打开的折叠面板的唯一标识符 items: [ { id: 1, title: '折叠面板1', content: '折叠面板1的内容' }, { id: 2, title: '折叠面板2', content: '折叠面板2的内容' }, { id: 3, title: '折叠面板3', content: '折叠面板3的内容' }, ], }; }, methods: { closeOtherPanels(currentPanel) { const panels = this.$refs.collapseItem; for (let i = 0; i < panels.length; i++) { if (currentPanel !== panels[i]) { panels[i].collapse(); } } }, }, }; </script> 请注意,在上述代码中,我们通过在 el-collapse-item 元素上使用 ref 属性,获取了所有生成的折叠面板元素的引用。而关闭其他折叠面板的方法 closeOtherPanels(),则是在遍历所有折叠面板元素调用的。在方法中,我们使用 if 语句判断当前循环到的折叠面板元素是否为被点折叠面板元素,如果不是,则调用该元素的 collapse() 方法将其关闭。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值