原生JS实现滑动按钮效果

实现滑动按钮效果,可以使用原生JavaScript实现。下面是完整的攻略:

第一步:HTML结构搭建

首先,需要在HTML文件中创建一个div容器元素,用于包裹整个滑动按钮。基本结构如下:

<div class="slider-container">
  <div class="slider-button"></div>
</div>

其中,slider-container为外层div容器,slider-button为内层滑动按钮。需要注意给两个元素设置样式,让其变成一个可拖动的按钮。

第二步:CSS样式设置

为了使滑动按钮具有好看的外观和可移动性,需要对其进行样式设置。主要包括以下几个方面:

  1. 设置外部容器的宽度和高度,和内层滑动按钮需要占据的宽度和高度。

  2. 给外部容器和内层滑动按钮设置 position: relative;,以便后面使用相对定位进行位置修改。

  3. 为内层滑动按钮设置圆角样式 border-radius: 50%;,让其变为圆形。

  4. 为内层滑动按钮添加背景图案,并设置可拖动时的手型光标。

下面是基本的CSS代码:

.slider-container {
  width: 200px;
  height: 50px;
  background-color: #ccc;
  border-radius: 25px;
  position: relative;
}

.slider-button {
  width: 50px;
  height: 50px;
  background-color: #fff;
  background-image: url('slider-icon.png');
  background-size: 30px 30px;
  background-position: center;
  background-repeat: no-repeat;
  cursor: pointer;
  position: absolute;
  border-radius: 50%;
  top: 0;
  left: 0;
  transition: all 0.2s ease;
}

第三步:实现滑动操作

接下来,就是滑动按钮的主要操作:拖动事件监听和相应的位置计算。

  1. 监听鼠标按下事件mousedown,在事件监听函数中获取鼠标按下时的位置startX和内层滑动按钮的初始位置startLeft
const sliderButton = document.querySelector('.slider-button'); // 获取内层滑动按钮元素
let startX = 0; // 记录鼠标按下时的起点位置
let startLeft = 0; // 记录内层滑动按钮的初始位置
sliderButton.addEventListener('mousedown', function (event) {
  startX = event.clientX; // 记录鼠标按下时的起点位置
  startLeft = parseInt(window.getComputedStyle(sliderButton).left); // 获取内层滑动按钮的初始位置
});
  1. 监听鼠标移动事件mousemove,在事件监听函数中计算内层滑动按钮应该移动到的位置,并更新其left属性的值。
document.addEventListener('mousemove', function (event) {
  const diffX = event.clientX - startX; // 计算鼠标移动的距离
  const newLeft = startLeft + diffX; // 计算内层滑动按钮应该移动到的位置

  if (newLeft >= 0 && newLeft <= (200 - 50)) { // 判断移动是否超出范围
    sliderButton.style.left = newLeft + 'px'; // 更新内层滑动按钮的位置
  }
});
  1. 监听鼠标抬起事件mouseup,在事件监听函数中判断滑动按钮是否处于选中状态,并执行相应的操作。
document.addEventListener('mouseup', function (event) {
  const diffX = event.clientX - startX; // 计算鼠标移动的距离
  const newLeft = startLeft + diffX; // 计算内层滑动按钮应该移动到的位置

  if (newLeft >= (200 - 50)) {
    sliderButton.style.left = (200 - 50) + 'px'; // 将内层滑动按钮移动到最右边
    alert('滑动成功!'); // 弹出成功提示框
  } else {
    sliderButton.style.left = '0px'; // 将内层滑动按钮移动回原位置
  }
});

示例说明

示例一:纯JS实现滑动验证码

此示例演示如何使用纯JS实现一个滑动验证码。基本功能已经包括拖动、验证成功/失败提示等。

可参考以下代码(HTML和CSS略):

const slider = document.querySelector('.slider');
const sliderButton = document.querySelector('.slider-button');
let startX = 0;
let startLeft = 0;
let isSliding = false; // 记录是否处于滑动状态
let isSuccess = false; // 记录是否验证成功

sliderButton.addEventListener('mousedown', function (event) {
  startX = event.clientX;
  startLeft = parseInt(window.getComputedStyle(sliderButton).left);
  isSliding = true; // 进入滑动状态
});

document.addEventListener('mousemove', function (event) {
  if (isSliding) {
    const diffX = event.clientX - startX;
    const newLeft = startLeft + diffX;
    if (newLeft >= 0 && newLeft <= (200 - 50)) {
      sliderButton.style.left = newLeft + 'px';
    }
  }
});

document.addEventListener('mouseup', function (event) {
  if (isSliding) {
    const diffX = event.clientX - startX;
    const newLeft = startLeft + diffX;
    isSliding = false; // 退出滑动状态
    if (newLeft >= (200 - 50)) {
      sliderButton.style.left = (200 - 50) + 'px';
      isSuccess = true;
      alert('验证成功!');
      resetSlidingButton(); // 重置滑动按钮
    } else {
      sliderButton.style.left = '0px';
      alert('验证失败,请重新滑动!');
    }
  }
});

function resetSlidingButton() {
  sliderButton.style.left = '0px';
  isSuccess = false;
  // 重设验证码
}

示例二:原生JS移动端滑动验证

此示例演示如何在移动端使用原生JS实现一个滑动验证。

可参考以下代码(HTML和CSS略):

const slider = document.querySelector('.slider');
const sliderButton = document.querySelector('.slider-button');
let startX = 0;
let startLeft = 0;
let isSliding = false;
let isSuccess = false;

sliderButton.addEventListener('touchstart', function (event) {
  startX = event.touches[0].clientX; // 获取第一根手指按下时的起点位置
  startLeft = parseInt(window.getComputedStyle(sliderButton).left);
  isSliding = true;
});

document.addEventListener('touchmove', function (event) {
  if (isSliding) {
    const diffX = event.touches[0].clientX - startX; // 获取第一根手指向后移动时的位置
    const newLeft = startLeft + diffX;
    if (newLeft >= 0 && newLeft <= (200 - 50)) {
      sliderButton.style.left = newLeft + 'px';
    }
  }
});

document.addEventListener('touchend', function (event) {
  if (isSliding) {
    const diffX = event.changedTouches[0].clientX - startX; // 获取第一根手指最后离开时的位置
    const newLeft = startLeft + diffX;
    isSliding = false;
    if (newLeft >= (200 - 50)) {
      sliderButton.style.left = (200 - 50) + 'px';
      isSuccess = true;
      alert('验证成功!');
      resetSlidingButton();
    } else {
      sliderButton.style.left = '0px';
      alert('验证失败,请重新滑动!');
    }
  }
});

function resetSlidingButton() {
  sliderButton.style.left = '0px';
  isSuccess = false;
  // 重设验证码
}

以上两个示例都是基于原生JS实现,可以自行调整样式和功能,实现更加美观和可定制的滑动验证按钮。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:原生JS实现滑动按钮效果 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 最新2021win10企业版激活秘钥推荐 附激活工具+教程

    最新2021win10企业版激活秘钥推荐 附激活工具+教程 本文将介绍Win10企业版激活的一个合法方法,并提供激活工具及详细的操作步骤。 准备工作 在开始操作之前,请先准备以下内容: 一台未激活的Win10企业版电脑 下载并安装ActivationToolkit软件 操作步骤 第一步:备份证书 打开计算机,找到“此电脑”中的“C:\Windows\Syst…

    Azure 2023年5月25日
    00
  • Win10 Mobile/PC预览版10586.456更新了哪些内容? 更新内容汇总

    Win10 Mobile/PC预览版10586.456更新了哪些内容? 更新内容汇总 1. 前言 Win10 Mobile/PC预览版10586.456是Windows操作系统的一次更新,该版本号表示在10586建立号上的第456次更新。这是一个系统级别的更新,包括了一些增强功能、修复错误等内容。本篇文章将详细讲解这次更新的内容。 2.更新内容汇总 以下是W…

    Azure 2023年5月25日
    00
  • 最新win1021H1最新激活秘钥推荐 附激活工具+使用教程

    最新win1021H1最新激活秘钥推荐 附激活工具+使用教程攻略 1.简介 本文将为你介绍如何激活最新版本的 Windows 10 21H1,并附带激活工具与使用教程,以帮助你轻松激活你的电脑系统。 2.获取激活秘钥 Windows 的激活秘钥可以在以下网站购买: Microsoft官方网站 京东 淘宝 在购买激活秘钥时,请确保你购买的激活秘钥与你的 Win…

    Azure 2023年5月26日
    00
  • 微软build 2015大会图文直播 Spartan命名Edge

    微软build 2015大会图文直播 微软build 2015大会于2015年4月29日-5月1日在美国旧金山Moscone Center举行。本次大会是微软开发者社区的最大盛会,吸引了数万名开发者和技术爱好者参加。 图文直播 大会提供了多种观看方式,其中包括图文直播。以下是本次大会的图文直播流程: 在大会开始前,进入微软build官网或微软美国官网。 点击…

    Azure 2023年5月27日
    00
  • 使用VS开发 Node.js指南

    使用VS开发Node.js指南 Visual Studio是一款强大的集成开发环境,也支持Node.js开发。本指南将为您介绍如何使用Visual Studio来进行Node.js开发,包括如何创建项目、调试代码、使用npm等,以及两个简单的示例说明。 准备工作 首先,您需要安装Visual Studio。目前,最新的版本是Visual Studio 201…

    Azure 2023年5月26日
    00
  • 202101最新win10教育版/专业版激活秘钥分享 附激活工具

    202101最新win10教育版/专业版激活秘钥分享 附激活工具完整攻略 简介 本文将详细讲解如何使用秘钥和激活工具激活win10教育版/专业版,包括秘钥获取、激活工具下载、激活步骤等内容。 预备知识 在开始操作前,请确保你已经下载并安装了win10教育版/专业版系统,并且能够正常启动。 秘钥获取 打开浏览器,访问https://msdn.itellyou.…

    Azure 2023年5月25日
    00
  • Flyway的简单介绍及使用详解

    Flyway的简单介绍及使用详解 Flyway是什么 Flyway是一个简单开源的数据库版本管理工具。Flyway以数据库迁移的方式管理数据库的变更,从而确保数据库一直处于目标状态。 Flyway的核心概念 Migration Migration是指一次数据库的变更。在Flyway中,每一次变更都对应于一次Migration,每一次Migration对应于一…

    Azure 2023年5月25日
    00
  • 怎么永久激活Win10 Win10激活秘钥/激活码分享

    如何永久激活Win10 在使用Windows 10系统过程中,可能会出现提示需要激活的情况。为了正常使用电脑和系统,我们需要激活Win10系统。本文提供两种简单易行永久激活Win10的方法,其中包括使用激活秘钥/激活码的方式和通过工具自动激活的方式。 方法一:使用Win10激活秘钥/激活码 首先,打开一个可以浏览网页的浏览器(比如Chrome),进入JSBo…

    Azure 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部