vue轮播图

在公司手机端的vue编写中,需要用到一个轮播图,我一开始的时候使用的时候使用的是想在created中定义一个轮播函数,但是实际上这个轮播函数没有起作用,后面在网上看了一下,看到了网上的轮播图代码,是使用 transition-group来实现的,实践了一遍,现在代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            padding: 0;
            margin: 0;
        }
        .carousel-wrap{
            width: 600px;
            position: relative;
            margin: 0 auto;
        }
        .carousel {
            position: relative;
            height: 500px;
            width: 600px;
            background-color: #fff;
            overflow: hidden;
        }

        .slide-ul {
            width: 100%;
            height: 100%;
        }
        li {
            position: absolute;
            width: 100%;
            height: 100%;
        }
        img {
            width: 100%;
            height: 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)
        }
        .carousel-items{
            position: absolute;
            bottom: 10px;
            margin:0  auto;
            width: 100%;
            text-align: center;
        }
        .circle{
            display: inline-block;
            width: 10px;
            height: 10px;
            border-radius: 100%;
            border: 1px solid black;
            margin: 0 10px;
        }
        .item-active{
            background-color: whitesmoke;

        }

    </style>
</head>
<body>
<div id="carousel" class="carousel-wrap">
<div  class="carousel">
    <transition-group tag="ul" class="slide-ul" name="list">
        <li v-for="(list,index) in slideList" :key="index" v-show="index===currentIndex" @mouseenter="stop" @mouseleave="go">
            <a href="list.clickHref">
                <img :src="list.img" :alt="list.desc">
            </a>
        </li>
    </transition-group>
</div>
    <div class="carousel-items">
        <span v-for="(item,index) in slideList.length" class="circle" :class="{‘item-active‘:index===currentIndex}" @click="change(index)"></span>
    </div>
</div>
<script src="vue.js"></script>
<script type="application/ecmascript">
    new Vue({
        el: "#carousel",
        data:{
            slideList: [
                {
                    clickHref:"1",
                    img:"images/book5.jpg"
                },
                {
                    clickHref:"2",
                    img:"images/book6.jpg"

                },
                {
                    clickHref:"3",
                    img:"images/book7.jpg"
                }
            ],
            currentIndex:0,
            timer:‘‘
        },
        methods:{
          autoPlay:function(){
              this.currentIndex++;
              if (this.currentIndex > this.slideList.length - 1) {
                  this.currentIndex = 0
              }
          },
          stop: function () {
              clearInterval(this.timer);
              this.timer=null;

          },
          go: function(){
              this.timer=setInterval(()=>{
                  this.autoPlay()
              },4000)
          },
          change: function(index){
              this.currentIndex=index;
          }
        },
        created(){
            this.$nextTick(()=>{
                this.timer=setInterval(()=>{
                    this.autoPlay()
                },4000)
                }
            )
        }
    })

</script>
</body>
</html>

如上:

时间: 2024-10-14 12:10:51

vue轮播图的相关文章

vue 轮播图插件 Vue-Awesome-Swiper

Vue-Awesome-Swiper GitHub地址:https://github.com/surmon-china/vue-awesome-swiper 原文地址:https://www.cnblogs.com/mengfangui/p/10111441.html

vue上的简单轮播图

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

vue移动音乐app开发学习(三):轮播图组件的开发

本系列文章是为了记录学习中的知识点,便于后期自己观看.如果有需要的同学请登录慕课网,找到Vue 2.0 高级实战-开发移动端音乐WebApp进行观看,传送门. 完成后的页面状态以及项目结构如下: 一:创建轮播图组件slider.vue 1:在src/base下新建base文件夹,然后创建silder.vue: <template> <div class="slider" ref="slider"> <div class="sl

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

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

vue中轮播图的实现

轮播图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> &l

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

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

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

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

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