基于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 相关文章推荐
javascript动态向网页中添加表格实现代码
Feb 19 Javascript
jQuery trigger()方法用法介绍
Jan 13 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 Javascript
jquery按回车键实现表单提交的简单实例
May 25 Javascript
JavaScript中原型链存在的问题解析
Sep 25 Javascript
js+canvas实现动态吃豆人效果
Mar 22 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
Jan 16 Javascript
vue配置多页面的实现方法
May 22 Javascript
关于jquery中attr()和prop()方法的区别
May 28 jQuery
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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格式化电话号码的方法
2015/04/24 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
2016/02/16 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python网络编程实例简析
2014/09/26 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
HTML5 解决苹果手机不能自动播放音乐问题
2017/12/27 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
北京SQL新华信咨询
2016/09/30 面试题
大学三年计划书范文
2014/04/30 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
婚内分居协议书范文
2014/11/26 职场文书
应届毕业生求职简历自我评价
2015/03/02 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript