今天遇到一个换图标的,找了好多人的博客都没清晰的解决我的问题,还是自己写一个吧

第一步,先把右边的箭头给隐藏了 这个需要用到穿透 下面是css代码

>>>.el-collapse-item__arrow{
  display: none;
}
//下方两个是打开和关闭的图标
.downArrow1{
  display: inline-block;
  width: 13px;
  height: 16px;
  background-image: url(~@/assets/images/downArrow1.png);
}
.downArrow2{
  display: inline-block;
  width: 13px;
  height: 16px;
  background-image: url(~@/assets/images/downArrow1.png);
  transform: rotate(-180deg);
}
//头部穿透,让头部内容在两端,本身固有属性是flex
 >>> .el-collapse-item__header {
        justify-content: space-between;
       
      }

然后试用具名插槽把头部内容替换掉

        <el-collapse v-model="activeNames" @change="handleChange">
          <el-collapse-item name="1" >
             <template slot="title">
             第一部分 单选题 <i :class="judgeActive('1')!==-1? 'downArrow2':'downArrow1'</i>
             </template>
            <ul>
              内容
            </ul>
          </el-collapse-item>
        </el-collapse>

 这个时候折叠面板绑定的是 activeNames: ["1"],这个数组,这个时候需要一个函数监听是否含有改面板的name

    //判断是否打开
    judgeActive(data){
      return   this.activeNames.indexOf(data)
    },

这样就能实习图标的来回翻转了

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐