Home > Web Front-end > JS Tutorial > body text

Implement image carousel effect based on vue.js

高洛峰
Release: 2016-12-03 09:43:05
Original
2349 people have browsed it

Carousel effect:

Implement image carousel effect based on vue.js

Implement image carousel effect based on 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>
Copy after login

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>
Copy after login

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;
}
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!