使用vue的v-show和transition制作一个简单轮播图

<template>  <!--轮播图-->  <div class="carousel-wrap" id="carousel">    <transition-group tag="ul" class=‘slide-ul‘ :name="transitionName">      <li v-for="(list,index) in slideList" :key="index" v-show="index===currentIndex" @mouseenter="stop" @mouseleave="go">        <a :href="list.clickUrl" rel="nofollow">          <img :src="list.image" :alt="list.desc">        </a>      </li>    </transition-group>    <div class="carousel-items">      <span v-for="(item,index) in slideList.length" :class="{‘active‘:index===currentIndex}" @click="change(index)"></span>    </div>  </div></template>

<script>  export default{    data () {      return{        slideList: [          {            "clickUrl": "#",            "desc": "nhwc",            "image": ""          },          {            "clickUrl": "#",            "desc": "hxrj",            "image": ""          },          {            "clickUrl": "#",            "desc": "rsdh",            "image": ""          }        ],        currentIndex: 0,        timer: ‘‘,        transitionName: ‘list‘      }    },    mounted () {      this.$nextTick(() => {        this.timer = setInterval(() => {          this.autoPlay()        },3000)      })    },    methods: {      go() {        this.timer = setInterval(() => {          this.autoPlay()        },3000)      },      stop() {        clearInterval(this.timer)        this.timer = null      },      change(index) {        this.stop()        this.go()        if (this.currentIndex > index) {          this.transitionName = ‘back‘        }else if (this.currentIndex < index) {          this.transitionName = ‘list‘        }        this.currentIndex = index      },      autoPlay() {        this.currentIndex++        this.transitionName = ‘list‘        if (this.currentIndex > this.slideList.length - 1) {          this.currentIndex = 0        }      }    }  }</script>

<style>  .carousel-wrap {    position: relative;    height: 453px;    width: 100%;    overflow: hidden;    background-color: #fff;  }  .slide-ul {    width: 100%;    height: 100%;  }  .slide-ul li {    position: absolute;    width: 100%;    height: 100%;    overflow: hidden;}  .slide-ul img {    width: 100%;    height: 100%;  }  .carousel-items {    position: absolute;    z-index: 10;    top: 380px;    width: 100%;    margin: 0 auto;    text-align: center;    font-size: 0;}  .carousel-items span {    display: inline-block;    height: 6px;    width: 30px;    margin: 0 3px;    background-color: #b2b2b2;    cursor: pointer;  }  .carousel-items .active {    background-color: #00bbdd;  }  /*动画效果向左进入,向左离开 100至0,0至-100*/  .list-enter-active {    transition: all 1s ease;    transform: translateX(0)  }  .list-leave-active {    transition: all 1s ease;    transform: translateX(-100%)  }  .list-enter {    transform: translateX(100%)  }  .list-leave {    transform: translateX(0)  }  /*动画效果向右进入,向左离开 -100至0,100至0*/  .back-enter-active {    transition: all 1s ease;    transform: translateX(0)  }  .back-leave-active {    transition: all 1s ease;    transform: translateX(100%)  }  .back-enter {    transform: translateX(-100%)  }  .back-leave {    transform: translateX(0%)  }</style>

原文地址:https://www.cnblogs.com/fairy62/p/9680749.html

时间: 2024-10-04 06:02:41

使用vue的v-show和transition制作一个简单轮播图的相关文章

vue上的简单轮播图

好久没写轮播图了,今天在vue上写了个超简单的,效果还ok. .moveLeft{position:relative;right:ZOOMpx;transition:all 1s;} 原理是滚动时利用.moveLeft向左移动一个格子,造成滚动的假象,此时第二张图在第一个格子的位置: 这时候把第一个格子 li 的元素摘下接到 ul 末尾,并马上撤掉.moveLeft.每张图都在自己的格子上. 定时器循环该操作,一直轮播.可以用touch事件添加touchmove左右滑动效果和切换图片的功能,就不

Vue实现音乐播放器(七):轮播图组件(二)

轮播图组件 <template> <div class="slider" ref="slider"> <div class="slider-group" ref="sliderGroup"> //这里的<slot></slot>插槽表示里面的内容可以由引用这个轮播图组件的推荐组件来插入 只需要在<slider></slider>标签里面插入内容

3. vue中导入animate.css动画库、Swiper轮播图组件

1. vue中导入animate.css动画库 2. vue中使用Swiper轮播图插件 注意:swiper常用设置 原文地址:https://www.cnblogs.com/qfshini/p/12120612.html

用vue写一个仿简书的轮播图

原文地址:Bougie的博客 1.先展示最终效果: 2.解决思路 Vue的理念是以数据驱动视图,所以拒绝通过改变元素的margin-top来实现滚动效果.写好css样式,只需改变每张图片的class即可实现轮播效果.动画效果交给transition完成.可以将轮播图看成两个(mainSlide和extraSlide),各个图片的位置如图所示: 3.代码实现 各个slide的样式: $width: 800px; // 容器宽度 $height: 300px; // 容器高度 $bWidth: 50

vue轮播图

在公司手机端的vue编写中,需要用到一个轮播图,我一开始的时候使用的时候使用的是想在created中定义一个轮播函数,但是实际上这个轮播函数没有起作用,后面在网上看了一下,看到了网上的轮播图代码,是使用 transition-group来实现的,实践了一遍,现在代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&g

vue使用插件做轮播图

vue使用 vue-awesome-swiper制作轮播图. 1.访问github,搜索vue-awesome-swiper,查看用法. 第一个坑:github居然访问不了. 解决办法:参考别人 https://www.cnblogs.com/Owen-ET/p/10868620.html 其实访不访问都没关系,照着下面步骤来就可以了. 2.安装 vue-awesome-swiper指定版本 第二个坑:必须用这个版本,要不然后面很多bug了. npm i [email protected] --

横冲直撞vue(第四篇):v-model、指令系统总结、指令系统示例轮播图实现、指令系统示例跑马灯效果实现、在vue中使用样式的方式

一. v-model v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素. 尽管有些神奇,但v-model本质上不过是语法糖.它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理. v-model在内部为不同的输入元素使用不同的属性并抛出不同的事件: text 和 textarea 元素使用 value 属性和 input 事件: checkbox

CSS-用伪类制作小箭头(轮播图的左右切换btn)

先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代替,而是用纯css制作. 第一个是left按钮,即prev: .vmc-arrow-left:after { content: "\e079"; } 第二个是right按钮的,也就是next下一张的按钮: .vmc-arrow-right:after { content: "\e

iOS 制作一个简单的画板

制作简单画板 作为iOS初学者,在学习完UI的几个简单控件(UILable,UITextField,UIButton)之后,就可以制作一个简单的画图板demo,以下是具体制作流程(在MRC下),如有不足之处,还请各位大神们指教 0.0. 1.搭建界面,主要由UIButton,UITextField组成,底部的按钮是UITextField的一个自定义键盘(inputView) . - (void)viewDidLoad { [super viewDidLoad]; //创建菜单按钮 UIButto