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 相关文章推荐
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
javascript中定义类的方法详解
Feb 10 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
实例详解JavaScript获取链接参数的方法
Jan 01 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
May 04 Javascript
ajax异步请求详解
Jan 06 Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
swiper动态改变滑动内容的实现方法
Jan 17 Javascript
JavaScript创建对象的四种常用模式实例分析
Jan 11 Javascript
详解微信小程序开发用户授权登陆
Apr 24 Javascript
JavaScript十大取整方法实例教程
Dec 03 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP读取文件并可支持远程文件的代码分享
2012/10/03 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
通过隐藏iframe实现无刷新上传文件操作
2016/03/16 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
jQuery实现拖拽可编辑模块功能代码
2017/01/12 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
[02:54]DOTA2英雄基础教程 撼地者
2014/01/14 DOTA
跟老齐学Python之Python文档
2014/10/10 Python
python base64 decode incorrect padding错误解决方法
2015/01/08 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
python urllib爬虫模块使用解析
2019/09/05 Python
利用Python小工具实现3秒钟将视频转换为音频
2019/10/29 Python
Python安装whl文件过程图解
2020/02/18 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
采购文员岗位职责
2013/11/20 职场文书
建筑专业毕业生推荐信
2013/11/21 职场文书
高校自主招生自荐信
2013/12/09 职场文书
员工培训邀请函
2014/01/11 职场文书
吃通javascript正则表达式
2021/04/21 Javascript
Python基础之变量的相关知识总结
2021/06/23 Python
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
Vue全局事件总线你了解吗
2022/02/24 Vue.js