当前位置: 首页 > article >正文

Element走马灯组件循环播放两个页面是方向不一致

摘要:使用Carousel 走马灯循环播放同一类型的图片、文字等内容,会在循环内容为两组是出现下图 [1]中的现象。本文记录下如何解决

        之前项目遇到过一次这个问题,由于indicator-position 指示器不用显示,则判断内容长度为2时,复制一份原数据(数据和图片达4组)即可解决。这次再次遇到沿用原来的办法复制数据后,完善对底部指示器的处理。

        解决思路:复制数据后4个指示器,展示内容1,2时隐藏指示器3,4;反之,展示内容3,4是隐藏1,2。

        首先,在引入的组件中增加相关样式和属性。

<el-carousel height="350px" :class="[{'twoLoopInitData':isInitData && isDataTwoLoop}, 
{'twoLoopCopyData':!isInitData && isDataTwoLoop}]" :interval="6000" @change="carouselChange">
  <el-carousel-item v-for="(itemList, index) in bookMarkItemList" :key="index">
    <div class="content-wrapper">
      <!-- 展示内容-->
    </div>
  </el-carousel-item>
</el-carousel>

        其次,判断内容是不是两页,若是则复制数据。此处绑定的数据bookMarkItemList是接口返回的,可能会变化,通过watch监听bookMarkItemList,判断其长度是否为2,则isDataTwoLoop = true。还会通过el-carousel组件的chang事件判断索引是isInitData(第1,2页)还是复制的数据。

<script>
export default {
  data() {
    return {
      bookMarkItemList: [],
      isInitData: true,
      isDataTwoLoop: false,
    }
  },
  computed: {
  },
  watch: {
    bookMarkItemList() {
      if (this.bookMarkItemList.length === 2) {  // 解决走马灯两页显示滑动方向不正确的问题
        this.isDataTwoLoop = true
        this.bookMarkItemList = this.bookMarkItemList.concat(this.bookMarkItemList)
      }
    },
  },
  mounted() {
  },
  beforeDestroy() {
  },
  methods: {
    // el-carousel组件的chang事件,只支持传入index
    carouselChange(index) {
      if(index === 0||index === 1){
        this.isInitData = true
      }else{
        this.isInitData = false
      }
    },   
  },
}
</script>

        最后,依据上述判断结果,原始数据展示时,则隐藏复制数据的指示器;展示复制数据则隐藏原始数据的指示器。::v-deep是为了修改Element默认样式

.twoLoopCopyData{ // 解决走马灯两页切换时,方向不对的问题
  ::v-deep .el-carousel__indicators{
      &>li:nth-child(1),&>li:nth-child(2){
        display: none;
      }
  }
}

.twoLoopInitData{
  ::v-deep .el-carousel__indicators{
      &>li:nth-child(3),&>li:nth-child(4){
        display: none;
      }
  }
}

        总结:问题的解决思路很清晰,上述代码可直接套用

[1] https://blog.csdn.net/Working_hard_111/article/details/131833892


http://www.kler.cn/news/311018.html

相关文章:

  • 网络安全实训九(域环境的创建及其信息收集)
  • 图像到图像的翻译
  • General OCR Theory: Towards OCR-2.0 via a Unified End-to-end Model
  • 用 ReactPHP 实现图片上传加速:让并发上传实现真正的高效
  • 软件测试工程师面试整理-操作系统与网络基础
  • 人工智能——猴子摘香蕉问题
  • centos中yum方式部署Jenkins
  • 【Linux取经之路】编译器gcc/g++的使用 调试器gdb的使用
  • OceanBase 运维管理工具 OCP 4.x 升级:聚焦高可用、易用性及可观测性
  • Vscode搭配latex简易教程
  • file的判断和获取,创建和删除
  • C++使用Socket编程实现一个简单的HTTP服务器
  • 掌握MySQL性能监控 · performance_schema 使用快速入门
  • Linux_bash的一些特殊符号
  • 聚观早报 | 极越07正式上市;宝骏云海正式上市
  • Laya2.x出包alipay小游戏
  • Java后端框架---Spring
  • 每日一问:C++ 如何实现继承、封装和多态
  • 随着访问范围的扩大 OpenAI o1-mini 现已向免费用户开放
  • 大模型训练数据库Common Crawl
  • MySQL常用的函数
  • 函数的定义与使用
  • 【Hot100】LeetCode—169. 多数元素
  • 常见汇编指令
  • C++系列-谓词predicate
  • AWTK fscript 中的 CRC函数
  • 转行大模型开发:挑战与机遇,如何有效学习以实现职业转变
  • 第二证券:移动物联网迎政策助力 稀土价格有望持续回暖
  • 【C++】 —— string的使用
  • [go] 适配器模式