基于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 相关文章推荐
ToolTips JQEURY插件之简洁小提示框效果
Nov 19 Javascript
js修改table中Td的值(定义td的单击事件)
Jan 10 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
jQuery基础知识点总结(必看)
May 31 Javascript
基于JavaScript实现带缩略图的轮播效果
Jan 12 Javascript
JS ES6多行字符串与连接字符串的表示方法
Apr 26 Javascript
基于JavaScript实现百度搜索框效果
Jun 28 Javascript
极简主义法编写JavaScript类
Nov 02 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
Jul 29 Javascript
js实现html滑动图片拼图验证
Jun 24 Javascript
js实现3D旋转相册
Aug 02 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
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
使用新浪微博API的OAuth认证发布微博实例
2015/03/27 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
2017/02/10 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
使用Chart.js图表库制作漂亮的响应式表单
2015/10/28 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
详解angular ui-grid之过滤器设置
2017/06/07 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python实现报表自动化详解
2017/11/16 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
Python threading的使用方法解析
2019/08/28 Python
Python imread、newaxis用法详解
2019/11/04 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
解释一下钝化(Swap out)
2016/12/26 面试题
若干个Java基础面试题
2015/05/19 面试题
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
捐款活动总结
2014/08/27 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python