• Vue.js 轮播组件


    <template>
      <div class="slide-show" @mouseover="clearInv" @mouseout="runInv">
        <div class="slide-img">
          <a :href="slides[nowIndex].href">
            <transition name="slide-trans">
              <img v-if="isShow" :src="slides[nowIndex].src">
            </transition>
            <transition name="slide-trans-old">
              <img v-if="!isShow" :src="slides[nowIndex].src">
            </transition>
          </a>
        </div>
        <h2>{{ slides[nowIndex].title }}</h2>
        <ul class="slide-pages">
          <li @click="goto(prevIndex)"><</li>
          <li v-for="(item, index) in slides"
              @click="goto(index)"
          >
            <a :class="{on: index === nowIndex}">{{ index + 1 }}</a>
          </li>
          <li @click="goto(nextIndex)">></li>
        </ul>
      </div>
    </template>
    
    <script>
        export default {
          name: "slide",
          props:{
            slides:{
              type:Array,
              default:[]
            },
            inv:{
              type:[Number ,String],
              default: 1000
            }
          },
          data(){
            return {
              nowIndex:0,
              isShow:true
            }
          },
          computed:{
            prevIndex(){
              if(this.nowIndex == 0){
                return this.slides.length - 1
              }else{
                return this.nowIndex-1
              }
            },
            nextIndex(){
              if(this.nowIndex == this.slides.length - 1){
                return 0
              }else{
                return this.nowIndex+1
              }
            }
          },
          methods:{
            goto (index) {
              this.isShow = false
              setTimeout(() => {
                this.isShow = true
                this.nowIndex = index
              }, 10)
            },
            runInv () {
              this.invId = setInterval(() => {
                this.goto(this.nextIndex)
              }, this.inv)
            },
            clearInv () {
              clearInterval(this.invId)
            }
          },
          mounted(){
            this.runInv()
          }
        }
    </script>
    
    <style scoped>
      .slide-trans-enter-active {
        transition: all .5s;
      }
      .slide-trans-enter {
        transform: translateX(900px);
      }
      .slide-trans-old-leave-active {
        transition: all .5s;
        transform: translateX(-900px);
      }
      .slide-show {
        position: relative;
        margin: 15px 15px 15px 0;
         900px;
        height: 500px;
        overflow: hidden;
      }
      .slide-show h2 {
        position: absolute;
         100%;
        height: 100%;
        color: #fff;
        background: #000;
        opacity: .5;
        bottom: 0;
        height: 30px;
        text-align: left;
        padding-left: 15px;
      }
      .slide-img {
         100%;
      }
      .slide-img img {
         100%;
        position: absolute;
        top: 0;
      }
      .slide-pages {
        position: absolute;
        bottom: 10px;
        right: 15px;
      }
      .slide-pages li {
        display: inline-block;
        padding: 0 10px;
        cursor: pointer;
        color: #fff;
      }
      .slide-pages li .on {
        text-decoration: underline;
      }
    </style>
    

      《====================        计算属性:只有在它的相关依赖数据发生改变时,才会重新赋值       =======================》

  • 相关阅读:
    rsync删除文件与rm删除文件
    centos扩容inode
    muduo笔记 日志库(一)
    C++ Primer学习笔记 第16章 模板与泛型编程(二)
    muduo笔记 时间戳类Timestamp
    muduo笔记 线程类Thread,当前线程CurrentThread
    muduo笔记 网络库(四)TimerQueue定时器队列
    Linux backtrace()系列函数
    muduo笔记 网络库(二)I/O复用封装Poller
    01背包问题
  • 原文地址:https://www.cnblogs.com/dyy-dida/p/10522864.html
Copyright © 2020-2023  润新知