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 相关文章推荐
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
Mar 12 Javascript
js动态往表格的td中添加图片并注册事件
Jun 12 Javascript
PHP实现的各种中文编码转换类分享
Jan 23 Javascript
jQuery解决input超多的表单提交
Aug 10 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
全面总结Javascript对数组对象的各种操作
Jan 22 Javascript
jQuery基本选择器和层次选择器学习使用
Feb 27 Javascript
jQuery实现checkbox全选功能完整实例
Jul 12 jQuery
微信小程序实现图片滚动效果示例
Dec 05 Javascript
VUE项目初建和常见问题总结
Sep 12 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
Nov 07 Javascript
vue项目中定义全局变量、函数的几种方法
Nov 08 Javascript
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
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
vue 中directive功能的简单实现
2018/01/05 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
pandas计数 value_counts()的使用
2019/06/24 Python
Django中的静态文件管理过程解析
2019/08/01 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
增大python字体的方法步骤
2020/07/05 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
英国探险旅游专家:Explore
2018/12/20 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
ktv服务员岗位职责
2015/02/09 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
成功的商业计划书这样写才最靠谱
2019/07/12 职场文书
MySQL中order by的使用详情
2021/11/17 MySQL
Python Pandas读取Excel日期数据的异常处理方法
2022/02/28 Python