vue实现小球滑动交叉效果
作者:初夏七鹿 发布时间:2024-04-30 10:30:09
标签:vue,滑动,交叉
本文实例为大家分享了vue实现小球滑动交叉效果的具体代码,供大家参考,具体内容如下
废话不多说 直接上代码!
<template>
<div class="about">
<div class="box">
<!-- 默认线 -->
<div class="Line"></div>
<!-- 蓝色的线 -->
<div class="slider-Line" ref="slider-Line"></div>
<!-- 左边小球 -->
<div class="ball" @touchstart.prevent="fnstart"></div>
<!-- 右边小球 -->
<div class="ball ac" @touchstart.prevent="fnstart"></div>
<!-- 上面的数字 -->
<div class="num" ref="num">{{ num }}</div>
</div>
</div>
</template>
script代码:
<script>
export default {
data() {
return {
num: 0,
};
},
methods: {
fnstart(ev) {
// 小球
this.oDiv = ev.target;
// pagx:鼠标点击的位置到页面最左边的距离 offsetLeft当前元素左边到最大盒子最左边
this.pageX = ev.changedTouches[0].pageX - this.oDiv.offsetLeft;
document.ontouchmove = this.FnMove;
document.ontouchend = this.FnEnd;
// 父元素的宽度
this.parent = ev.target.parentNode.offsetWidth;
// 减去小球的宽度
this.Width = this.parent - ev.target.offsetWidth;
//获取父元素
this.parents = ev.target.parentNode;
//获取子元素
this.child = this.parents.children;
// 右边小球 获取小球
this.Right = this.parents.children[0];
// 左边小球
this.Left = this.parents.children[1];
},
FnMove(ev) {
// 减去小球滑动的距离 计算的是元素最左边,到浏览器最边上
this.X = ev.changedTouches[0].pageX - this.pageX;
// console.log(this.X, 1010101);
// 判断小球等于零不能出去
if (this.X <= 0) {
this.X = 0;
}
// 判断大于等于不让球出去
if (this.X > this.Width) {
this.X = this.Width;
}
// 让左边小球滑动,线跟着换颜色
//滑动上面的数值跟着变,分成100份
this.xnum = this.X / 3.7;
// 取整数
this.num = parseInt(this.xnum);
this.$refs["num"].style.left = this.X + 6 + "px";
// 让小球相交不影响
// 动态监测左右
for (var i = 0; i < this.child.length; i++) {
if (this.child[i].classList.contains("ball")) {
// 一共5个元素 减掉3就是 蓝色线条的位置 length
let Len = this.child.length - 3;
if (i == Len) {
// 左边小球减右边小球取绝对值就是线条的宽
this.dis = Math.abs( this.child[i].offsetLeft - this.child[i + 1].offsetLeft );
// 小球的宽度
this.child[1].style.width = this.dis + "px";
// 如果左边小球减掉右边小球的值小于0 蓝色线条的left就是左边小球的offsetLeft值
if (this.child[i].offsetLeft - this.child[i + 1].offsetLeft < 0) {
this.child[1].style.left = this.child[i].offsetLeft + "px";
} else {
// 否则就是右边小球的offsetLeft值
this.child[1].style.left = this.child[i + 1].offsetLeft + "px";
}
}
}
}
this.oDiv.style.left = this.X + "px";
},
FnEnd() {
document.ontouchmove = null;
document.ontouchend = null;
},
},
};
</script>
CSS代码:
<style lang="less" scoped>
.box {
position: relative;
width: 400px;
height: 30px;
background-color: rgb(240, 16, 83);
top: 50px;
margin: auto;
.ball {
position: absolute;
width: 30px;
height: 30px;
background-color: pink;
border-radius: 50%;
z-index: 2;
}
.ball.ac {
right: 0;
background-color: purple;
}
.Line {
position: absolute;
top: 14px;
width: 400px;
height: 2px;
line-height: 30px;
background: #ccc;
}
.slider-Line {
position: absolute;
top: 14px;
width: 400px;
height: 2px;
line-height: 30px;
background-color: blue;
}
.num {
position: absolute;
top: -19px;
left: 9px;
}
}
</style>
来源:https://blog.csdn.net/m0_58875967/article/details/119857178


猜你喜欢
- 本文实例为大家分享了JavaScript实现前端倒计时效果的具体代码,供大家参考,具体内容如下代码:<!DOCTYPE html>
- 前言:使用“宇宙最强IDE”开发项目时,都需要根据不同情况选择一个项目模板,来满足开发需求:如下VS为我们提供了基础的项目模板,但现有项目模
- 在操作矩阵的时候,不同的接口对于矩阵的输入维度要求不同,输入可能为1-D,2-D,3-D等等。下面介绍一下使用Numpy进行矩阵维度变更的相
- 前言字典是 Python 中很重要的数据类型,有很多内置函数需要了解。1.dict.clear清除字典中所有键值对。dict = {'
- pt-kill 是一个优秀的kill MySQL连接的一个工具,是percona toolkit的一部分,在因为空闲连接较多导致超过最大连接
- 经常写 shell 脚本知道,字符串判断可以用 =,!= 数字的判断是 -eq,-ne 等,但是 Python 确不是这样子的。所以作为慢慢
- Pygame模块一览表:引入pygame模块 ,若本机没有请自行pip install pygame#载入必要的模块import pygam
- 你知道SQL Server这么庞大的企业级数据库服务器产品是如何build出来的吗?这有些相关的数据:每个build 的大小在300GB左右
- 每个被捕获的参数将被作为纯Python字符串来发送,而不管正则表达式中的格式。 举个例子,在这行URLConf中:(r'^artic
- Golang爬虫框架 colly 简介colly是一个采用Go语言编写的Web爬虫框架,旨在提供一个能够些任何爬虫/采集器/蜘蛛的简介模板,
- 注:我指一个网站被第三方网站以iframe的形式调用时,被调用网站的禁止策略 和 调用网站的突破禁止策略,跟XSS麽关系,但跟clickja
- 1.sys模块sys模块的常见函数列表:sys.argv: 实现从程序外部向程序传递参数。sys.exit([arg]): 程序中间的退出,
- 延迟是什么defer即延迟语句,极个别的情况下,Go才使⽤defer、panic、recover这种异常处理形式。defer可以延迟函数、延
- 先看看效果:效果-点击弹出弹框 -点击复选框,已选div中 显示已选中的选项 -再次点击取消选中状态,已选div中 显示的选中选项取消显示
- 1.虚拟机数据库设置--重启数据库(1)vi /etc/my.cnfbind = 0.0.0.0(2).远程不能用root用户连,得新建用户
- 测试函数:第一种:list的set函数第二种:{}.fromkeys().keys()测试代码:#!/usr/bin/python#-*-
- 网页可以说是网站构成的基本元素。当我们轻点鼠标,在网海中遨游,一幅幅精彩的网页会呈现在我们面前,那么,网页的精彩与否的因素是什么呢?色彩的搭
- 在生活之中,我们想要去一个很远的地方,可能先走到坐车的地方,再从乘车去目的地。那么,我们是不是可以理解成函数嵌套也是这样,需要不同函数的组合
- 插入排序插入排序,英文名(insertion sort)是一种简单且有效的比较排序算法。思想: 在每次迭代过程中算法随机地从输入序
- 本文实例讲述了Python实现连接两个无规则列表后删除重复元素并升序排序的方法。分享给大家供大家参考,具体如下:# -*- coding:u