今天在上慕課老師fishenal的vue實戰課程的時候,有一個輪播圖組件實現,在跟著做的時候,自己也踩了一些坑。此外,在原課程案例的基礎上,我加入了不同方向的滑動功能。
本文章采用Vue結合Css3來實現輪播圖。
首先要了解的是Vue的動畫原理。在vue中,如果我們要給元素設置動畫效果,則需要使用一個<transition name="targetClassName"></transition>將相應的元素包裹住,如下:
<transition name="imgShouldMove"> <img v-if="shouldShow" src="/1.jpg"> </transition>
之后,便可以在.imgShoudMove中設置動畫屬性了,如下:
.imgShouldMove-enter{ transition: all 0.5s; } .imgShouldMove-enter-active{ transform:translateX(900px); } 注意在HTML中,這里<img>有一個v-if="shoudShow"屬性。shouldShow這個屬性是在data(){}中設置的,當shouldShow從false-->true時(即img從無到突然出現時),Vue動畫原理將動畫分為了 shouldShouldMove-enter 和 imgShouldMove-enter-active 兩個階段。
我本人對其的理解為,其中 shouldShouldMove-enter 表示動畫開始的初始狀態, imgShouldMove-enter-active 這表示動畫的終止狀態。而動畫的觸發則是通過if-show引起的。
如下圖

了解了這些之后,我就可以開始著手實現輪播圖組件了。
首先是HTML代碼:
<template> <div class="carousel" @mouseenter="clearInv()" @mouseleave="runInterval()"> <div class="imgBox"> <a :href="pics[currentIndex].href" rel="external nofollow" > <transition v-bind:name="'carousel-trans-' + direction + '-old'"> <!-- isShow: false -> true 取反后: true -> false(從顯示到消失) --> <img v-if="!isShow" :src="pics[currentIndex].src"> </transition> <transition v-bind:name="'carousel-trans-' + direction "> <!-- isShow: false -> true --> <!-- 從消失到顯示 --> <img v-if="isShow" :src="pics[currentIndex].src"> </transition> </a> </div> <h2>{{pics[currentIndex].title}}</h2> <ul class="pagination"> <li v-for="(item, index) in pics" @click="goto(index)" :class="{active:index === currentIndex}">{{index + 1}}</li> </ul> <div class="prevBtn" @click="goto(prevIndex)"><i class="iconfont">
主站蜘蛛池模板:
阜阳市|
瓮安县|
弋阳县|
东乌珠穆沁旗|
德阳市|
龙州县|
探索|
古交市|
隆安县|
颍上县|
万全县|
濉溪县|
博兴县|
洛阳市|
上杭县|
手游|
武定县|
天等县|
海晏县|
上犹县|
麦盖提县|
虞城县|
山丹县|
定襄县|
钟祥市|
旬阳县|
海原县|
长海县|
穆棱市|
保德县|
元朗区|
巴青县|
波密县|
五指山市|
玉环县|
丽江市|
黎城县|
双鸭山市|
武定县|
普定县|
民乐县|