for循环el-checkbox实现类似于el-collapse的折叠效果

1.需要实现的功能

1.1. 点击label文字/多选框实现多选操作;

1.2. 点击(点击可展开预览/收起)实现展开或隐藏多选条件下对应的面板;

1.3.可实现Collapse 折叠面板的基础用法:可同时展开多个面板,各面板之间不影响;

2.模拟数据和方法

//data中定义
 data() {
      return {
        checkboxGroup:[], //模拟多选绑定的值
        list: [ //模拟checkbox的多选项
          {id:100,label:'学生基本信息'},
          {id:101,label:'现任职务'},
          {id:102,label:'外语水平'},
        ],
        activeIndex: -1, //模拟当前点击的面板
     }
 }

 created() {
   this.changeData(); //周期函数中调用
 },

 methods: {
      //数据改造-为了单独控制面板的隐藏-显示
      changeData(){
        const items = this.list.map(item => {
          item.show = false
          return item
        })
        return items
      },
      //Checkbox-group点击事件:注意是Checkbox-group
      changeCheckbox(value){
        console.log('Checkbox-group点击事件',value);
      },
      //控制面板展示-隐藏
      clickItem(index){
        this.activeIndex = index
        this.list[this.activeIndex].show = !this.list[this.activeIndex].show 
      },
 }

3.页面代码部分

<el-checkbox-group class="prize-apply-checkbox" v-model="checkboxGroup" @change="changeCheckbox">
  <el-checkbox v-for="(item,index) in list" :key="index" :label="item.label"> 
      {{item.label}} 
      <span @click="clickItem(index)">(点击可展开预览/收起)</span>
      <div v-if="item.show == true && item.label == '学生基本信息'"> 
         学生基本信息
      </div>
      <div v-if="item.show == true && item.label == '现任职务'"> 
         现任职务
      </div>
      <div v-if="item.show == true && item.label == '外语水平'"> 
        外语水平
      </div>
   </el-checkbox>
</el-checkbox-group>

4.页面代码css

注意:因为引用的是elementUI组件中的el-checkbox组件,根据自己的实际需求,样式需要自己单独控制,个人建议是写在可公共控制的element-ui.scss文件中

.prize-apply-checkbox{
  padding-left: 25px;
  .el-checkbox{
    display: flex;
    margin-right: 0px;
    margin-bottom: 20px;
    .el-checkbox__label{
      width: 100%;
      position: relative;
      span{
        font-size: 12px;
        cursor: pointer;
      }
      >div{
        width: 100%;
        height: 100px;
        border: 1px red solid;
        padding: 15px 20px;
      }
      :hover{
        color: #409EFF;
      }
    }
  }
  .el-checkbox__input.is-checked + .el-checkbox__label {
    color: #333;
  }
}
  

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值