js实现兼容PC端和移动端滑块拖动选择数字效果


Posted in Javascript onFebruary 16, 2017

本文为大家分享了js实现移动端滑块拖动选择数字的效果,可以通过鼠标拖拽滑动效果来选择数字,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="zh-cn">

 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
  <title>鼠标拖动小方块</title>
  <style type="text/css">
   .lineDiv {
    position: relative;
    height: 5px;
    background: red;
    width: 300px;
    margin: 50px auto;
   }

   .lineDiv .minDiv {
    position: absolute;
    top: -5px;
    left: 0;
    width: 15px;
    height: 15px;
    background: green;
    cursor: pointer
   }

   .lineDiv .minDiv .vals {
    position: absolute;
    font-size: 20px;
    top: -45px;
    left: -10px;
    width: 35px;
    height: 35px;
    line-height: 35px;
    text-align: center;
    background: blue;
   }

   .lineDiv .minDiv .vals:after {
    content: "";
    width: 0px;
    height: 0px;
    border-top: 6px solid blue;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid transparent;
    display: block;
    margin-left: 11px;
   }
  </style>
 </head>

 <body>
  <center>
   <h3>用鼠标拖动小方块<span id="msg">0</span>%</h3>
  </center>
  <div id="lineDiv" class="lineDiv">
   <div id="minDiv" class="minDiv">
    <div id="vals" class="vals">0</div>
   </div>
  </div>
  <script>
   window.onload = function() {

    var lineDiv = document.getElementById('lineDiv'); //长线条
    var minDiv = document.getElementById('minDiv'); //小方块
    var msg = document.getElementById("msg");
    var vals = document.getElementById("vals");
    var ifBool = false; //判断鼠标是否按下
    //事件
    var start = function(e) {
     e.stopPropagation();
     ifBool = true;
     console.log("鼠标按下")
    }
    var move = function(e) {
     console.log("鼠标拖动")
     if(ifBool) {
      if(!e.touches) { //兼容移动端
       var x = e.clientX;
      } else {  //兼容PC端
       var x = e.touches[0].pageX;
      }
      //var x = e.touches[0].pageX || e.clientX; //鼠标横坐标var x
      var lineDiv_left = getPosition(lineDiv).left; //长线条的横坐标
      var minDiv_left = x - lineDiv_left; //小方块相对于父元素(长线条)的left值 
      if(minDiv_left >= lineDiv.offsetWidth - 15) {
       minDiv_left = lineDiv.offsetWidth - 15;
      }
      if(minDiv_left < 0) {
       minDiv_left = 0;
      }
      //设置拖动后小方块的left值
      minDiv.style.left = minDiv_left + "px";
      msg.innerText = parseInt((minDiv_left / (lineDiv.offsetWidth - 15)) * 100);
      vals.innerText = parseInt((minDiv_left / (lineDiv.offsetWidth - 15)) * 100);
     }
    }
    var end = function(e) {
      console.log("鼠标弹起")
      ifBool = false;
     }
     //鼠标按下方块
    minDiv.addEventListener("touchstart", start);
    minDiv.addEventListener("mousedown", start);
    //拖动
    window.addEventListener("touchmove", move);
    window.addEventListener("mousemove", move);
    //鼠标松开
    window.addEventListener("touchend", end);
    window.addEventListener("mouseup", end);
    //获取元素的绝对位置
    function getPosition(node) {
     var left = node.offsetLeft; //获取元素相对于其父元素的left值var left
     var top = node.offsetTop;
     current = node.offsetParent; // 取得元素的offsetParent
       // 一直循环直到根元素
     
     while(current != null) {

      left += current.offsetLeft;

      top += current.offsetTop;

      current = current.offsetParent;

     }
     return {
      "left": left,
      "top": top
     };
    }
   }
  </script>
 </body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中查找最近的共有祖先元素的实现代码
Dec 30 Javascript
关于JAVASCRIPT urldecode URL解码的问题
Jan 08 Javascript
用js闭包的方法实现多点标注冒泡示例
May 29 Javascript
JavaScript中property和attribute的区别详细介绍
Mar 03 Javascript
JS实现简单的二维矩阵乘积运算
Jan 26 Javascript
bootstrap监听滚动实现头部跟随滚动
Nov 08 Javascript
微信小程序实现banner图轮播效果
Jun 28 Javascript
Vue框架TypeScript装饰器使用指南小结
Feb 18 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 Javascript
vscode调试node.js的实现方法
Mar 22 Javascript
VUE实现吸底按钮
Mar 04 Vue.js
js时间戳格式化成日期格式的多种方法介绍
Feb 16 #Javascript
基于JavaScript实现拖动滑块效果
Feb 16 #Javascript
js实现移动端微信页面禁止字体放大
Feb 16 #Javascript
100多个基础常用JS函数和语法集合大全
Feb 16 #Javascript
js实现tab切换效果
Feb 16 #Javascript
jquery实现自适应banner焦点图
Feb 16 #Javascript
js 作用域和变量详解
Feb 16 #Javascript
You might like
thinkphp中连接oracle时封装方法无法用的解决办法
2013/06/17 PHP
各种快递查询--Api接口
2016/04/26 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
JS启动应用程序的一个简单例子
2008/05/11 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
基于ajax和jsonp的原生封装(实例)
2017/10/16 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
[01:59]深扒TI7聊天轮盘语音出处 1
2017/05/11 DOTA
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
Python利用pyHook实现监听用户鼠标与键盘事件
2014/08/21 Python
Python自动扫雷实现方法
2015/07/25 Python
基于python实现微信模板消息
2015/12/21 Python
python使用fork实现守护进程的方法
2017/11/16 Python
python list转矩阵的实例讲解
2018/08/04 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python之mock模块基本使用方法详解
2019/06/27 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
Python随机数函数代码实例解析
2020/02/09 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
animation和transition的区别
2020/10/12 HTML / CSS
党员评议个人总结
2014/10/20 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
Python制作春联的示例代码
2022/01/22 Python
Python if else条件语句形式详解
2022/03/24 Python