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获取图片长和宽度的代码
Nov 24 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
javascript变量作用域使用中常见错误总结
Mar 26 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
jQuery 中DOM 操作详解
Jan 13 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
Aug 01 Javascript
解决拦截器对ajax请求的拦截实例详解
Dec 21 Javascript
JavaScript的setter与getter方法
Nov 29 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
Jun 28 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
Jul 15 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
Nov 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&amp;&amp;mysql)六
2006/10/09 PHP
php2html php生成静态页函数
2008/12/08 PHP
php实现的简单检验登陆类
2015/06/18 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
JavaScript中的console.assert()函数介绍
2014/12/29 Javascript
javascript中关于&amp;&amp; 和 || 表达式的小技巧分享
2015/04/10 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
bootstrapValidator bootstrap-select验证不可用的解决办法
2017/01/11 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
JavaScript 用fetch 实现异步下载文件功能
2017/07/21 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
2016/06/13 Python
详解Python中的from..import绝对导入语句
2016/06/21 Python
python:socket传输大文件示例
2017/01/18 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
应聘面试自我评价
2014/01/24 职场文书
活动策划求职信模板
2014/04/21 职场文书
优秀员工推荐信
2014/05/10 职场文书
大学生党性分析材料
2014/12/19 职场文书
黄埔军校观后感
2015/06/10 职场文书
生日祝酒词大全
2015/08/10 职场文书
HTML中的表单Form实现居中效果
2021/05/25 HTML / CSS