iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现移动端原生小球滑块
  • 115
分享到

vue实现移动端原生小球滑块

2024-04-02 19:04:59 115人浏览 安东尼
摘要

本文实例为大家分享了Vue实现移动端原生小球滑块的具体代码,供大家参考,具体内容如下 效果 用到的一些事件 阻止默认事件:ev.preventDefault &&

本文实例为大家分享了Vue实现移动端原生小球滑块的具体代码,供大家参考,具体内容如下

效果

用到的一些事件

阻止默认事件:ev.preventDefault && ev.preventDefault();

获取宽度:getBoundinGClientRect().width

点击位置在元素的位置:ev.changedTouches[0].pageX

<template>
  <div id="app">
    <div class="slider">
      <div class="line"></div>
      <div class="line ac"></div>
      <div class="box" @touchstart="fnStart"></div>
      <div class="box as" @touchstart="fnStart"></div>
    </div>
  </div>
</template>

js

<script>
export default {
  methods: {
    fnStart(ev) {
      // 计算点击位置在元素的坐标
      this.disX = ev.changedTouches[0].pageX - ev.target.offsetLeft;
      // 获取父节点
      this.parent = ev.target.parentnode;
      // 获取元素的宽
      this.ow = this.parent.getBoundingClientRect().width;
      // 计算除了元素的宽盒子还剩下多宽
      this.clienw = this.ow - ev.target.getBoundingClientRect().width;
 
      // 获取左边小圆球
      this.lcircle = this.parent.children[2];
      // 获取右边小圆球
      this.rcircle = this.parent.children[3];
 
      // 获取变色条
      this.line = this.parent.children[1];
 
      document.ontouchmove = this.fnmove;
      document.ontouchend = this.fnend;
    },
    fnmove(ev) {
      // 计算移动的距离
      this.ll = ev.changedTouches[0].pageX - this.disX;
      // 判断不能让小圆球到盒子外面
      if (this.ll < 0) this.ll = 0;
      if (this.ll > this.clienw) this.ll = this.clienw;
      // 右边线条
      if (ev.target.className.indexOf("as") != -1) {
        this.line.style.width =this.ll - this.parent.children[2].offsetLeft + "px";
        // 右边推动左边小圆球
        // 判断如果右边小球移动到左边小于左边小球offsetLeft的距离 如果当前为0 加一个小圆球的宽他们就不会重叠
        console.log(this.ll)
        if (this.ll < this.lcircle.offsetLeft + 30) {
          // 如果this.ll大于左边小球的值 当前this.ll-30就是左边小球left的值
          this.ind = this.ll - 30;
          
          console.log(this.ind)
          // 判断当前左边位置过等于0 就让他左边的位置等于0 就不会到盒子外面
          if (this.ind <= 0) {
            this.ind = 0;
          }
          // 如果this.ll的值小于小圆球的宽 两个圆就会重叠  所以让右边圆的left值为30
          if (this.ll < 30) {
            this.ll = 30;
          }
 
          this.line.style.left = this.ind + "px";
          this.lcircle.style.left = this.ind + "px";
        }
      } else {
        // 左线条
        // 获取左边的距离
        this.line.style.left = this.ll + "px";
        // 当前this.ll就是line多出来的宽   如果左边不动 offsetleft的值是300   this.ll是移动的距离
        this.line.style.width =
          this.parent.children[3].offsetLeft - this.ll + "px";
        // 左边推动右边小圆球  要把右边小球+30 不然两个小球就会重合到一起
        if (this.ll + 30 > this.rcircle.offsetLeft) {
          this.indX = this.ll + 30;
 
          if (this.indX > this.clienw) {
            this.indX = this.clienw;
          }
 
              // 判断当前移动的距离不能超过 this.clienw-30如果超过就会重叠
          if(this.ll>this.clienw-30){
            this.ll=this.clienw-30
          }
 
          this.line.style.left=this.indX+'px'
          this.rcircle.style.left=this.indX+'px'
        }
      }
 
      ev.target.style.left = this.ll + "px";
    },
    fnend() {
      document.ontouchmove = null;
      document.ontouchend = null;
    },
  },
};
</script>

CSS样式 

<style scoped lang="less">
.slider {
  height: 30px;
  width: 300px;
  background: #999;
  position: relative;
  margin: auto;
  .box {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: pink;
    position: absolute;
  }
  .box.as {
    background: blueviolet;
    right: 0;
  }
  // 线条
  .line {
    width: 300px;
    height: 5px;
    background: #eee;
    position: absolute;
  }
  .line.ac {
    background: rgb(247, 151, 25);
  }
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现移动端原生小球滑块

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

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

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

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

下载Word文档
猜你喜欢
  • vue实现移动端原生小球滑块
    本文实例为大家分享了vue实现移动端原生小球滑块的具体代码,供大家参考,具体内容如下 效果 用到的一些事件 阻止默认事件:ev.preventDefault && ...
    99+
    2022-11-13
  • vue实现小球滑动交叉效果
    本文实例为大家分享了vue实现小球滑动交叉效果的具体代码,供大家参考,具体内容如下 废话不多说 直接上代码! <template> <div class="...
    99+
    2022-11-12
  • vue3实现移动端滑动模块
    本文实例为大家分享了vue3实现移动端滑动模块的具体代码,供大家参考,具体内容如下 需要实现的需求如下 直接上代码 HTML: <div class="container" ...
    99+
    2022-11-13
  • 原生javascript如何实现移动端滑动banner效果
    这篇文章给大家分享的是有关原生javascript如何实现移动端滑动banner效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下<!DOCTYPE ...
    99+
    2022-10-19
  • vue实现移动滑块验证
    本文实例为大家分享了vue实现移动滑块验证的具体代码,供大家参考,具体内容如下 记录一下今天的学习内容 <div class="solidBox" :class="{'so...
    99+
    2022-11-13
  • 原生js实现弹动小球效果
    本文实例为大家分享了JavaScript实现弹动小球效果展示的具体代码,供大家参考,具体内容如下 源码展示 <!doctype html> <html> &...
    99+
    2022-11-13
  • 原生js怎么实现弹动小球效果
    这篇文章主要介绍了原生js怎么实现弹动小球效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇原生js怎么实现弹动小球效果文章都会有所收获,下面我们一起来看看吧。效果如下源码展示<!doctype ...
    99+
    2023-06-30
  • vue移动端实现手指滑动效果
    本文实例为大家分享了vue移动端实现手指滑动效果的具体代码,供大家参考,具体内容如下 滑动时候黄色块宽度跟着变化 通过touch点击实现 目前感觉宽度变化有点问题,还在思考中 下...
    99+
    2022-11-12
  • vue2.0如何实现移动端滑动事件vue-touch
    这篇文章主要介绍vue2.0如何实现移动端滑动事件vue-touch,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Vue-touch的使用有时候我们不止需要有返回键,也要有手势滑动切...
    99+
    2022-10-19
  • vue移动端实现手指滑动效果的方法
    本篇内容主要讲解“vue移动端实现手指滑动效果的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue移动端实现手指滑动效果的方法”吧!本文实例为大家分享了vue移动端实现手指滑动效果的具体代...
    99+
    2023-06-20
  • 微信小程序如何实现移动端滑动分页效果
    这篇文章主要介绍微信小程序如何实现移动端滑动分页效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一般在PC上我们要分页都是通过上一页和下一页来实现的,手机通过当下滑到一定程度的时候...
    99+
    2022-10-19
  • Vue移动端如何实现右滑屏幕返回上一页
    这篇文章将为大家详细讲解有关Vue移动端如何实现右滑屏幕返回上一页,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装依赖使用npm安装vue-directive-touc...
    99+
    2022-10-19
  • vue移动端实现左滑编辑与删除的全过程
    前言 根据项目需要使用 Vue-touch 实现了一个vue移动端的左滑编辑和删除功能,废话不多说,先看效果图,然后上代码吧! 方法如下: 第一步:安装 &nb...
    99+
    2022-11-12
  • vue.js项目使用原生js实现移动端的轮播图
    目录前言一、了解原生js移动端的事件二、轮播图实战第一部分:template模板第一部分解读:第二部分:script标签内代码第二部分解读:第三部分:css样式部分三、效果图结束语前...
    99+
    2022-11-13
  • vue自定义指令实现元素滑动移动端适配及边界处理
    目录效果演示核心属性实现思路代码注意自定义指令this指向问题滑动后点击事件被触发移动端滑动问题效果演示 核心属性 Element.clientWidth:元素可视宽度。 Elem...
    99+
    2022-11-13
  • vue.js中怎么使用原生js实现移动端的轮播图
    这篇文章主要介绍“vue.js中怎么使用原生js实现移动端的轮播图”,在日常操作中,相信很多人在vue.js中怎么使用原生js实现移动端的轮播图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.js中怎么...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作