• vue使用transition实现无缝轮播


    直接上代码:

    <template>
      <div class="page">
        <div class="carousel">
          <div class="inner">
            <div v-for="(item, index) in imgUrls" :key="index">
              <transition>
                <div class="carousel-item" v-if="index === currentIndex">
                  <img :src="item" alt="" />
                </div>
              </transition>
            </div>
          </div>
        </div>
      </div>
    </template>
    
    <script>
    export default {
      name: "",
      components: {},
      data() {
        return {
          currentIndex: 0,
          imgUrls: [
            "https://img.hbhcdn.com/zhuanti/jh-img-orig-ga_1329336533799247872_600_300_25174.jpg",
            "https://img.hbhcdn.com/zhuanti/jh-img-orig-ga_1329337053091831808_600_300_36103.jpg",
            "https://img.hbhcdn.com/zhuanti/jh-img-orig-ga_1329337017066954752_600_300_37129.jpg",
          ],
        };
      },
      methods: {
        autoPlay() {
          setInterval(() => {
            this.setIndex();
          }, 3000);
        },
        setIndex() {
          this.currentIndex++;
          if (this.currentIndex == this.imgUrls.length) {
            this.currentIndex = 0;
          }
        },
      },
      mounted() {
        this.autoPlay();
      },
    };
    </script>
    
    <style>
    .carousel {
       600px;
      height: 300px;
      position: relative;
      margin: 0 auto;
    }
    .inner {
      position: relative;
       100%;
      height: 100%;
      overflow: hidden;  /*必须*/
    }
    .carousel-item {
      position: absolute; /*必须*/
      top: 0;
      left: 30px;
       100%;
      height: 100%;
      margin: 0 10px;
    }
    .v-enter-active,
    .v-leave-active {  /*进入和离开需要执行时间*/
      transition: all 0.5s linear;
    }
    .v-enter-active {
      transform: translateX(100%);
    }
    .v-enter-to {
      transform: translateX(0);
    }
    .v-leave-active {
      transform: translateX(0);
    }
    .v-leave-to {
      transform: translateX(-100%);
    }
    </style>

    后续扩展放向:

      1. 封装组件

      2.可拖拽

      3.轮播样式可定制化

      4.基础拓展-->跑马灯功能

    ...

  • 相关阅读:
    截图与图片合成的几种方法
    GPUImage 自定义滤镜
    How do I solve the error: An error was encountered while running (Domain = LaunchServicesError, Code = 0) ?
    tableview 重用nib cell
    开发DZ插件教程
    QBImagePickerController 用法
    ALAsset和ALAssetRepresentation
    if exists和if not exists关键字用法
    Java socket 超时
    Android 图片的压缩
  • 原文地址:https://www.cnblogs.com/wxyblog/p/14150949.html
Copyright © 2020-2023  润新知