>  기사  >  웹 프론트엔드  >  vue.js를 기반으로 이미지 캐러셀 효과 구현

vue.js를 기반으로 이미지 캐러셀 효과 구현

高洛峰
高洛峰원래의
2016-12-03 09:43:052339검색

회전판 효과:

vue.js를 기반으로 이미지 캐러셀 효과 구현

vue.js를 기반으로 이미지 캐러셀 효과 구현

html

<template>
 <div class="shuffling">
 <div class="fouce fl">
 <div class="focus">
 <ul class="showimg">
 <template v-for=&#39;sd in shufflingData&#39;>
  <li v-if=&#39;shufflingId==$index&#39; v-on:mouseover=&#39;showPreNext&#39; v-on:mouseout=&#39;hiddenPreNext&#39;>
  <a target="_blank" title="{{sd.title}}" class="img" href="{{sd.href}}"><img alt="{{sd.title}}" v-bind:src="sd.url"/></a>
  <h3><a target="_blank" title="{{sd.title}}" href="{{sd.href}}">{{sd.title}}</a></h3>
  </li>
  </template>
 </ul>
 <div class=&#39;bullet-pagination&#39;>
  <a class="bullet" v-bind:class="{&#39;active&#39;: shufflingId==0}" v-on:click=&#39;bulletFunOne&#39;></a>
  <a class="bullet" v-bind:class="{&#39;active&#39;: shufflingId==1}" v-on:click=&#39;bulletFunTwo&#39;></a>
  <a class="bullet" v-bind:class="{&#39;active&#39;: shufflingId==2}" v-on:click=&#39;bulletFunThree&#39;></a>
 </div>
 <div v-show=&#39;PreNext&#39; class="preNext pre" v-on:mouseover=&#39;showPreNext&#39; v-on:mouseout=&#39;hiddenPreNext&#39; v-on:click=&#39;preFun&#39;></div>
 <div v-show=&#39;PreNext&#39; class="preNext next" v-on:mouseover=&#39;showPreNext&#39; v-on:mouseout=&#39;hiddenPreNext&#39; v-on:click=&#39;nextFun&#39;></div>
 </div>
 </div>
 </div>
</template>

js

<script>
export default {
 components: {
 },
 ready: function() {
 var _this=this;
 var timer = setInterval(function() {
 if(_this.shufflingId>=0&&_this.shufflingId<_this.shufflingData.length-1){
 _this.shufflingId=parseInt(_this.shufflingId)+1;
 }
 else if (_this.shufflingId==_this.shufflingData.length-1) {
 _this.shufflingId=0;
 }
 }, 5000)
 },
 methods: {
 bulletFunOne:function(){
 this.shufflingId=0;
 },
 bulletFunTwo:function(){
 this.shufflingId=1;
 },
 bulletFunThree:function(){
 this.shufflingId=2;
 },
 showPreNext:function(){
 this.PreNext=true;
 },
 hiddenPreNext:function(){
 this.PreNext=false;
 },
 preFun:function(){
 var _this=this;
 if(_this.shufflingId>0&&_this.shufflingId<_this.shufflingData.length){
 _this.shufflingId=parseInt(_this.shufflingId)-1;
 }
 },
 nextFun:function(){
 var _this=this;
 if(_this.shufflingId>=0&&_this.shufflingId<_this.shufflingData.length-1){
 _this.shufflingId=parseInt(_this.shufflingId)+1;
 }
 }
 },
 data() {
 return {
 shufflingData:[{
 title:&#39;喵来个米&#39;,
 href:&#39;1&#39;,
 url:&#39;/xxx/xx/src/img/1.png&#39;
 },
 {
 title:&#39;豆豆&#39;,
 href:&#39;2&#39;,
 url:&#39;/xxx/xx/src/img/2.png&#39;
 },{
 title:&#39;猫咪咪&#39;,
 href:&#39;3&#39;,
 url:&#39;/xxx/xx/src/img/3.jpg&#39;
 }],
 shufflingId:0,
 PreNext:false,
 }
 }
}
</script>

CSS

.fouce {
 position: relative;
 left:380px;
 overflow: hidden;
 height: 570px;
 width: 1100px;
}
.fl {
 float: left;
}
.focus{
 overflow: hidden;
}
.fouce ul {
 position: absolute;
}
.fouce ul li {
 float: left;
}
.fouce ul li a.img {
 display: block;
 height: 520px;
}
.showimg{
 width:1440px;
 left:-0px;
}
.showimg img {
 display: block;
 width:1100px;
 height:520px;
}
.fouce .bullet-pagination {
 position: absolute;
 bottom: 50px;
}
.fouce ul li h3 {
 height: 40px;
 line-height: 40px;
 background-color: #ededed;
 text-align: center;
 font-size: 25px;
 width: 1100px;
}
.bullet-pagination {
 width: 100%;
 text-align: center;
 padding-top: 16px;
 clear: both;
 overflow: hidden;
}
.bullet {
 display: inline-block;
 background: #fff;
 width: 12px;
 height: 12px;
 border-radius: 6px;
 -webkit-border-radius: 6px;
 margin-right: 5px;
 opacity: 0.8;
 -webkit-transition: opacity 0.8s linear;
 -moz-transition: opacity 0.8s linear;
 -ms-transition: opacity 0.8s linear;
 -o-transition: opacity 0.8s linear;
 transition: opacity 0.8s linear;
}
.bullet.active {
 background: #007cdb;
 opacity: 1;
 cursor: pointer;
}
.preNext {
 display: block;
 width: 31px;
 height: 41px;
 position: absolute;
 top: 200px;
 cursor: pointer;
}
.pre {
 background: url(&#39;/xxx/xx/src/img/news_arr_r.png&#39;) no-repeat right center;
}
.next {
 background: url(&#39;/xxx/xx/src/img/news_arr_r.png&#39;) no-repeat left center;
 right: 0px;
}
* {
 padding: 0;
 margin: 0;
 list-style: none;
}
a{
 text-decoration: none;
}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.