基于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 中的 &amp;&amp; 和 || 使用小结
Apr 25 Javascript
JQueryEasyUI Layout布局框架的使用
Apr 08 Javascript
javascript ready和load事件的区别示例介绍
Aug 30 Javascript
jQuery中事件与动画的总结分享
May 24 Javascript
jQuery实现的跨容器无缝拖动效果代码
Jun 21 Javascript
微信小程序 slider 详解及实例代码
Jan 10 Javascript
js实现百度搜索提示框
Feb 05 Javascript
几行js代码实现自适应
Feb 24 Javascript
javascript对HTML字符转义与反转义
Dec 13 Javascript
基于javascript的拖拽类封装详解
Apr 19 Javascript
重学JS之显示强制类型转换详解
Jun 30 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
Feb 19 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
虹吸壶是谁发明的?煮出来的咖啡好喝吗
2021/03/04 冲泡冲煮
php设计模式 Decorator(装饰模式)
2011/06/26 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
Vue实现日历小插件
2019/06/26 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
transform python环境快速配置方法
2018/09/27 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
Series和DataFrame使用简单入门
2019/11/13 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
创新比赛获奖感言
2014/02/13 职场文书
幼儿园标语大全
2014/06/19 职场文书
师德师风的心得体会
2014/09/02 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
刘公岛导游词
2015/02/05 职场文书
医生个人年终总结
2015/02/28 职场文书
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript