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 相关文章推荐
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
轻松实现javascript数据双向绑定
Nov 11 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 Javascript
Google Maps基础及实例解析
Aug 06 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
react中的ajax封装实例详解
Oct 17 Javascript
详解Vue中watch的高级用法
May 02 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
php阳历转农历优化版
2016/08/08 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jQuery中appendTo()方法用法实例
2015/01/08 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
ThinkJS中如何使用MongoDB的CURD操作
2016/12/13 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
2017/03/29 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
初学python数组的处理代码
2011/01/04 Python
python中的global关键字的使用方法
2019/08/20 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
六一儿童节活动策划方案
2014/01/27 职场文书
领班岗位职责范文
2014/02/06 职场文书
一般基层干部群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书
台式电脑蓝牙适配器怎么安装?台式电脑蓝牙适配器安装教程
2022/04/08 数码科技