iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue.js中怎么使用原生js实现移动端的轮播图
  • 683
分享到

vue.js中怎么使用原生js实现移动端的轮播图

2023-06-30 10:06:35 683人浏览 泡泡鱼
摘要

这篇文章主要介绍“vue.js中怎么使用原生js实现移动端的轮播图”,在日常操作中,相信很多人在Vue.js中怎么使用原生js实现移动端的轮播图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js中怎么

这篇文章主要介绍“vue.js中怎么使用原生js实现移动端的轮播图”,在日常操作中,相信很多人在Vue.js中怎么使用原生js实现移动端的轮播图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js中怎么使用原生js实现移动端的轮播图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、了解原生js移动端的事件

    原生js移动端的事件一共有四种:

    事件作用
    touchstart手指放到屏幕上触发
    touchmove手指在屏幕上移动触发(高频触发)
    touchend手指离开屏幕触发
    touchcancel系统取消touch事件时触发

    在每个事件被触发后,会返回一个event参数,event里面包含着三个触摸列表,即:

    event中的触摸列表内容
    touches屏幕上所有的手指列表
    targetTouches当前这个DOM中的手指列表
    changedTouches涉及当前事件的手指列表(本实例中尽量用这个)

    触摸列表中每个触摸对象(即每个手指)都对应着一些触摸时生成的信息(只写了部分)

    触摸信息含义
    clientX / clientY触摸点相对于浏览器的位置
    pageX / pageY触摸点相对于页面的位置
    screenX / screenY触摸点相对于屏幕的位置

    总结:我们可以用触摸事件传入的参数event.changedTouches[0].pageX 获得我们触发( event )触摸事件那个手指( changedTouches[0] )当前位置相对于页面的位置( pageX )

    二、轮播图实战

    我们做的轮播图功能中只用到前三种触发事件,我们来看一下具体的应用。
    因为vue.js项目中都是以组件的形式来开发的,所以我这里就以一个组件的形式来展示,有疑问的可以留言询问。

    第一部分:template模板

    <template>    <div class="ContinuPlay_box" @touchstart="TouchStart" @touchmove="TouchMove" @touchend="TouchEnd">      <div class="items_box">        <div v-for="(item, index) in banners" class="slide" :key="index">          <a :href="item.link" rel="external nofollow" >            <img :src="item.image" alt="">          </a>        </div>      </div>      <div class="points_box">        <div class="points">          <div class="each_point" v-for="(item, index) in banners.length" :key="index" :class="{current:index==CurrentImg}"></div>        </div>      </div>    </div></template>
    第一部分解读:

    class="ContinuPlay_box"的div标签作为组件模板里的根标签包裹内部标签(知识点:组件内如果多个标签处于同级,必须用一个标签将他们包裹起来),也用于设置overflow:hidden样式,用来隐藏未播放的轮播图

    class="items_box"的div标签作为内部class=“slide” 的div标签的父标签,用来开启flex布局,该标签内主要内容就是轮播图图片

    class=“slide” 的div标签用v-for指令对父组件传进来的数据banners进行遍历并输出

    class="points"的div标签作为内部class="each_point"的div标签的父标签,用来开启flex布局,让轮播图的中下方的小圆点有序排列,该标签内部主要内容就是轮播图中间下方的进度条小圆点

    第二部分:script标签内代码

    <script>  export default {    name: "ContinuPlay",    props:['banners'],         //接受父级组件传过来的banners数据    data(){      return{        bannerwidth: 0,        //轮播图宽度        StartPoint: 0,         //触摸开始的点的横坐标        EndPoint: 0,           //触摸结束的点的横坐标        MoveLength: 0,         //StartPoint与EndPoint的差值        CurrentImg: 0,         //当前轮播图的索引        isPlaying: true,       //判断是否处于自动轮播        playTimer: null        //轮播定时器      }    },    methods:{      TouchStart(event){      //停止轮播        clearInterval(this.playTimer)        //获取触摸的开始点        this.StartPoint = event.changedTouches[0].pageX      },      TouchMove(event){        //获取触摸的结束点        this.EndPoint = event.changedTouches[0].pageX        this.slidings()      },      TouchEnd(){        this.Jump()        //开始轮播        this.startPlay()      },      //Jump()方法用于处理滑动到一定程度后松手自动跳转到下一页或上一页      Jump(){        const currentimg = document.getElementsByClassName('slide')        //滑动超过轮播图宽度的百分之40,则跳转下一张,否则不跳转        if(this.MoveLength > 0 && this.CurrentImg !== this.banners.length-1){          if(this.MoveLength > this.bannerwidth * 0.4){            this.CurrentImg ++            currentimg[0].style.marginLeft = -this.CurrentImg * this.bannerwidth + 'px'          }          else{            currentimg[0].style.marginLeft = -this.CurrentImg * this.bannerwidth + 'px'          }        }        else if(this.MoveLength < 0 && this.CurrentImg !== 0){          if(-this.MoveLength > this.bannerwidth * 0.4){            this.CurrentImg --            currentimg[0].style.marginLeft = -this.CurrentImg * this.bannerwidth + 'px'          }          else{            currentimg[0].style.marginLeft = -this.CurrentImg * this.bannerwidth + 'px'          }        }      },      //slidings()方法用于处理在滑动过程中,轮播图跟着手指滑动的距离移动      slidings(){        //判断是点击还是滑动        if(this.StartPoint === this.EndPoint){return}        this.MoveLength = this.StartPoint - this.EndPoint        //操作DOM,获取轮播图对象标签        const currentimg = document.getElementsByClassName('slide')        //获取轮播图的宽度        this.bannerwidth = currentimg[0].offsetWidth        //判断是否超出滑动范围,即第一页无法再往前一页滑动,最后一页无法再往后一页滑动        if(this.MoveLength > 0 && this.CurrentImg !== this.banners.length-1){          currentimg[0].style.marginLeft = -this.MoveLength - this.CurrentImg * this.bannerwidth   + 'px'        }        else if(this.MoveLength < 0 && this.CurrentImg !== 0){          currentimg[0].style.marginLeft = -this.MoveLength - this.CurrentImg * this.bannerwidth   + 'px'        }      },      //开启轮播      startPlay() {          clearInterval(this.playTimer)          this.playTimer = setInterval(() => {            if(this.CurrentImg === 3) {              this.CurrentImg = -1            }            this.CurrentImg ++            const currentimg = document.getElementsByClassName('slide')            this.bannerwidth = currentimg[0].offsetWidth            currentimg[0].style.marginLeft = -this.CurrentImg * this.bannerwidth + 'px'            currentimg[0].style.transition = 'all 1s ease'          }, 3000)      }    },    mounted() {    //页面挂在完毕自动开启轮播    this.startPlay()    }  }</script>
    第二部分解读:

    在组件data属性中,初始化了几个变量:StartPoint(触摸开始点横坐标)、EndPoint(触摸结束时横坐标)、MoveLength(移动的长度(有正负))、CurrentImg(当前轮播图索引)

    在页面挂在完成后, 触发methods中的startPlay方法,开启轮播功能

    在触摸事件中主要运用 StartPoint - EndPoint 的值使得图片跟着手指的滑动方向同步移动, 并且在触摸开始时,关闭自动轮播定时器,在触摸结束后,自动开启轮播定时器

    在松手后,通过Jump() 方法进行跳转上下页图片

    第三部分:CSS样式部分

    <style scoped>  .ContinuPlay_box{    overflow: hidden;    position: relative;  }  .ContinuPlay_box .items_box{    display: flex;  }  .ContinuPlay_box .slide{    flex-shrink: 0;    width: 100%;  }  .ContinuPlay_box .slide img, .ContinuPlay_box .slide a{    width: 100%;    height: 100%;  }  .points_box{    display: flex;    justify-content: center;  }  .points{    display: flex;    width: 33%;    height: 10px;    position: absolute;    bottom: 8px;    justify-content: space-evenly;  }  .points .each_point{    width: 8px;    height: 8px;    border-radius: 8px;    background: #fff;    opacity: 0.7;  }  .points .current{    background: #ff0031;  }</style>

    css样式就不做多解释了,因为这比较抽象,你们可以根据我的代码进行调试优化,我的应该也不是最好的

    三、效果图

    此gif图展示的是我现在已经开发的部分项目效果图,其中包括本文讲的轮播图功能

    vue.js中怎么使用原生js实现移动端的轮播图

    到此,关于“vue.js中怎么使用原生js实现移动端的轮播图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: vue.js中怎么使用原生js实现移动端的轮播图

    本文链接: https://www.lsjlt.com/news/328208.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • vue.js中怎么使用原生js实现移动端的轮播图
      这篇文章主要介绍“vue.js中怎么使用原生js实现移动端的轮播图”,在日常操作中,相信很多人在vue.js中怎么使用原生js实现移动端的轮播图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js中怎么...
      99+
      2023-06-30
    • vue.js项目使用原生js实现移动端的轮播图
      目录前言一、了解原生js移动端的事件二、轮播图实战第一部分:template模板第一部分解读:第二部分:script标签内代码第二部分解读:第三部分:css样式部分三、效果图结束语前...
      99+
      2024-04-02
    • JS怎么实现原生轮播图
      小编给大家分享一下JS怎么实现原生轮播图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CSS部分:*{   ...
      99+
      2024-04-02
    • 如何使用纯js + transition动画实现移动端web轮播图
      这篇文章主要介绍了如何使用纯js + transition动画实现移动端web轮播图,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带...
      99+
      2024-04-02
    • 怎么用原生JS实现简单的轮播图效果
      本篇内容主要讲解“怎么用原生JS实现简单的轮播图效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用原生JS实现简单的轮播图效果”吧!实现效果:功能需求:鼠标经过轮播图模块,左右按钮显示,离...
      99+
      2023-07-02
    • js如何实现移动端手指滑动轮播图效果
      这篇文章将为大家详细讲解有关js如何实现移动端手指滑动轮播图效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如下所示:<!DOCTYPE html>...
      99+
      2024-04-02
    • JS原生实现轮播图的几种方法
      轮播图 主要思想就是: 在大的容器里,装着一个很长的表,表是容器宽度的整数倍。 然后通过更改列表样式里的left属性来实现左右滑动。 本文旨在控制滑动五张图片,但在html中使用了七...
      99+
      2024-04-02
    • 原生JS实现简单的轮播图效果
      本文实例为大家分享了JS实现简单的轮播图效果的具体代码,供大家参考,具体内容如下 实现效果: 功能需求: 1.鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮 2.点击右侧按钮一...
      99+
      2024-04-02
    • 如何使用JS原生实现带小白点轮播图
      这篇文章将为大家详细讲解有关如何使用JS原生实现带小白点轮播图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css代码:*{   margin:0px...
      99+
      2024-04-02
    • 原生Js如何实现简单无缝滚动轮播图
      这篇文章给大家分享的是有关原生Js如何实现简单无缝滚动轮播图的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原简单的滚动轮播代码<html><head>   &...
      99+
      2023-06-15
    • 如何使用原生的javascript来实现轮播图
      这篇文章主要介绍如何使用原生的javascript来实现轮播图,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体代码如下所示:<!DOCTYPE html> &...
      99+
      2024-04-02
    • 这么用原生js自动轮播展示产品图片
      今天小编给大家分享一下这么用原生js自动轮播展示产品图片的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
      99+
      2024-04-02
    • 怎么使用js实现图片轮播效果
      这篇文章主要介绍怎么使用js实现图片轮播效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!只有img标签的html代码,做测试用:<body>  <img...
      99+
      2024-04-02
    • 怎么使用js实现上下滑动轮播
      这篇“怎么使用js实现上下滑动轮播”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用js实现上下滑动轮播”文章吧。一、效...
      99+
      2023-07-02
    • 原生Js 实现的简单无缝滚动轮播图的示例代码
         简单无缝滚动轮播图存在很多漏洞,就是后期增加图片时会很不方便,需要改动的地方也很多,耦合性也很强,只适用于一部分程序,所以我们可以通过改动图片结构和计算...
      99+
      2024-04-02
    • JS中Swiper怎么实现轮播图效果
      这篇文章给大家分享的是有关JS中Swiper怎么实现轮播图效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Swiper是移动端的一款非常强大的触摸滑动插件,下面代码只展示一些常...
      99+
      2024-04-02
    • 怎么用js实现3D轮播图效果
      本篇内容主要讲解“怎么用js实现3D轮播图效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用js实现3D轮播图效果”吧!具体内容如下:主要有平移和旋转构成3d效果的轮播图,小白一只,不足之...
      99+
      2023-06-25
    • 怎么使用vue轮播组件vue-awesome-swiper实现轮播图
      这篇文章主要讲解了“怎么使用vue轮播组件vue-awesome-swiper实现轮播图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用vue轮播组件vue-awesome-swipe...
      99+
      2023-07-04
    • JS实现轮播图效果的脚本怎么写
      这篇文章主要介绍“JS实现轮播图效果的脚本怎么写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JS实现轮播图效果的脚本怎么写”文章能帮助大家解决问题。以下是具体的代码:<!DOCTYPE&nb...
      99+
      2023-06-27
    • 使用纯CSS、JS实现图片轮播效果的示例
      小编给大家分享一下使用纯CSS、JS实现图片轮播效果的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!js有什么特点1、js属于一种解释性脚本语言;2、在绝大多...
      99+
      2023-06-14
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作