基于JavaScript实现拖动滑块效果


Posted in Javascript onFebruary 16, 2017

本文实例为大家分享了js拖动滑块效果的具体代码,供大家参考,具体内容如下

效果:

基于JavaScript实现拖动滑块效果

代码:

<!DOCTYPE html>
<html lang="zh-cn">

 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <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; //判断鼠标是否按下

    //鼠标按下方块
    minDiv.addEventListener("touchstart", function(e) {
     e.stopPropagation();
     ifBool = true;
     console.log("鼠标按下")
    });

    //拖动
    window.addEventListener("touchmove", function(e) {
     console.log("鼠标拖动")
     if(ifBool) {
      var x = e.touches[0].pageX || e.touches[0].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);
     }
    });
    //鼠标松开
    window.addEventListener("touchend", function(e) {
     console.log("鼠标弹起")
     ifBool = false;
    });
    //获取元素的绝对位置
    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 textarea自动增高并隐藏滚动条
Dec 16 Javascript
javascript 循环读取JSON数据的代码
Jul 17 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
JavaScript function函数种类详解
Feb 22 Javascript
浅谈jQuery效果函数
Sep 16 Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
react 实现页面代码分割、按需加载的方法
Apr 03 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
js实现移动端微信页面禁止字体放大
Feb 16 #Javascript
100多个基础常用JS函数和语法集合大全
Feb 16 #Javascript
js实现tab切换效果
Feb 16 #Javascript
jquery实现自适应banner焦点图
Feb 16 #Javascript
js 作用域和变量详解
Feb 16 #Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
Feb 16 #Javascript
js面向对象编程总结
Feb 16 #Javascript
You might like
很实用的一个完整email发送程序
2006/10/09 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
几个实用的PHP内置函数使用指南
2014/11/27 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
详谈PHP编码转换问题
2015/07/28 PHP
php实现用户登陆简单实例
2017/04/04 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
24款热门实用的jQuery插件推荐
2014/12/24 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
微信小程序工具函数封装
2019/10/28 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
详解django中使用定时任务的方法
2018/09/27 Python
Flask-WTF表单的使用方法
2019/07/12 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
毕业生个人求职信范文分享
2014/01/05 职场文书
党员对照检查材料
2014/09/22 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript