基于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 相关文章推荐
关于html+ashx开发中几个问题的解决方法
Jul 18 Javascript
基于javascript滚动图片具体实现
Nov 18 Javascript
jQuery的deferred对象使用详解
Sep 25 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
Apr 27 Javascript
Vue的Class与Style绑定的方法
Sep 01 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
Sep 14 Javascript
express框架中使用jwt实现验证的方法
Aug 25 Javascript
layui使用form表单实现post请求页面跳转的方法
Sep 14 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
Jan 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在特殊字符前加斜杠的实现代码
2011/07/17 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
解析isset与is_null的区别
2013/08/09 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
javascript实现动态表头及表列的展现方法
2015/07/14 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
js实现双人五子棋小游戏
2020/05/28 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
js代码编写无缝轮播图
2020/09/13 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
python 获取et和excel的版本号
2009/04/09 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python实现自动发送邮件
2018/06/20 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
不用游标的SQL语句有哪些
2012/09/07 面试题
电子银行营销方案
2014/02/22 职场文书
班主任班级寄语大全
2014/04/04 职场文书
小学课外阅读总结
2014/07/09 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
八年级英语教学反思
2016/02/15 职场文书
个人售房合同协议书
2016/03/21 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS