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 相关文章推荐
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
纯js和css完成贪吃蛇小游戏demo
Sep 01 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
Jan 22 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
js中!和!!的区别与用法
May 09 Javascript
js实现随机点名
Jan 19 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新手上路(七)
2006/10/09 PHP
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
2016/03/08 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
JS三级联动代码格式实例详解
2019/12/30 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
容易被忽略的Python内置类型
2020/09/03 Python
pandas 数据类型转换的实现
2020/12/29 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
给老婆大人的检讨书
2014/02/24 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
春节联欢会策划方案
2014/05/16 职场文书
事业单位鉴定材料
2014/05/25 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
党员三严三实心得体会
2014/10/13 职场文书
2014年化验员工作总结
2014/11/18 职场文书
公司禁烟通知
2015/04/23 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
2019幼儿园感恩节活动策划书
2019/11/28 职场文书