elementUI 走马灯只有两个时滚动方向有误

当Vue项目的El-Carousel组件包含的数据只有两项时,首次切换动画为右滑,第二次变为左滑。为统一动画效果,文章提出了一种解决方案:复制数据使轮播项数翻倍,并自定义指示器及监听其点击事件来切换幻灯片。同时监听轮播组件的change事件,以更新自定义指示器的选中状态。通过这种方式,即使只有两项数据也能保持一致的左右滑动动画。
摘要由CSDN通过智能技术生成

问题

当走马灯只有两项时,第一次切换时动画效果是右滑,第二次切换时变成了左滑

解决办法

  1. 当数据只有两项时复制一遍数据,比如1,2 ==>1,2,1,2
  2. 自定义指示器,在只有两项时显示自定义的指示器,同时,监听自定义指示器的点击事件,切换幻灯片的索引
  3. 同时监听幻灯片的change事件,用以控制自定义指示器的选中样式
  • html代码
<el-carousel height="215px" trigger="click" @change="changeCarousel" ref="carouselTax" //监听change事件,切换自定义指示器的样式
                       :indicator-position="taxList.length===2?'none':'outside'">    //当只有两项数据时不显示默认的指示器
            <el-carousel-item class="carouselItem" v-for="(group,index) in taxList" :key="index">
              <ul class="dataList" v-for="item in group" :key="item.xzqhId">
                <li class="title">{{ item.xzqhmc }}</li>
                <li class="data">{{ item.value }}</li>
                <li class="describe">当期数据</li>
              </ul>
            </el-carousel-item>
//复制一遍,当只有两项时才显示
            <div  v-if="taxList.length===2">
              <el-carousel-item class="carouselItem"  v-for="(group,index) in taxList" :key="index">
                <ul class="dataList" v-for="item in group" :key="item.xzqhId">
                  <li class="title">{{ item.xzqhmc }}</li>
                  <li class="data">{{ item.value }}</li>
                  <li class="describe">当期数据</li>
                </ul>
              </el-carousel-item>
            </div>
          </el-carousel>
//当只有两项时显示自定义的指示器
<ul class="el-carousel__indicators el-carousel__indicators--horizontal el-carousel__indicators--outside"
              v-if="taxList.length===2">
            <li :class="index === indexActive?'is-active':''" class="el-carousel__indicator el-carousel__indicator--horizontal"
                v-for="(group,index) in taxList" :key="index"  @click="handleCarousel(index)">  //点击指示器,切换幻灯片的索引
              <button class="el-carousel__button"></button>
            </li>
          </ul>
  • Js代码
methods: {
    changeCarousel(a){
      if (this.taxList.length===2){
        a===2?this.indexActive=0:a===3?this.indexActive = 1:this.indexActive=a
      }else {
        this.indexActive = a
      }
    },
    handleCarousel(index){
      this.$refs.carouselTax.setActiveItem(index)
    },
}
  • CSS代码
 .is-active{
          button{
            background: #c0c4cc;
          }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值