JS实现容器模块左右拖动效果


Posted in Javascript onJanuary 14, 2020

本文实例为大家分享了JS实现容器模块左右拖动效果的具体代码,供大家参考,具体内容如下

JS实现容器模块左右拖动效果

实际效果是 鼠标点击上方颜色模块,左右拖动,根据拖动的距离来显示模块
一共有7个颜色块

代码如下

CSS

#box {
  /*margin: 0 auto;*/
  width: 1750px;
  border: 1px solid black;
  display: block;
  position: relative;
  left: 0;
  }

  #box>div {
  width: 250px;
  height: 50px;
  display: inline-block;
  text-align: center;
  float: left;
  }

  h1 {
  padding: 0;
  margin: 0;
  }

Html

<div style="width: 1000px;overflow: hidden;margin: auto;position: relative;">
  <div id="box">
  <div style="background: lemonchiffon;">
   <h1>one</h1></div>
  <div style="background: lightblue;">
   <h1>tow</h1></div>
  <div style="background: gold;">
   <h1>three</h1></div>
  <div style="background: blue;">
   <h1>four</h1></div>
  <div style="background: orange;">
   <h1>five</h1></div>
  <div style="background: aqua;">
   <h1>six</h1></div>
  <div style="background: brown;">
   <h1>seveen</h1></div>
  </div>
  <h1>拖动上面的颜色模块</h1>
 <p>实际原理还是轮播图</p>
</div>
<div style="width: 1000px;overflow: hidden;margin: auto;position: relative;">

注意:最大容器的DIV中宽度设置为1000px 表示展示的内容为1000,超出的被隐藏,根据自己想展示的模块来设计id为‘box'的DIV则为超大宽度的容器,里面模块以浮动形式布局,原理跟轮播图一样'**。

JS

<script src="jquery-2.1.0.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript">
 let box = document.getElementById('box')
 $box = $('#box')
 let mouseState = false; //鼠标默认状态
 let startX = 0;
 let startY = 0;
 let moveDirection = 0 //鼠标拖动距离
 $boxLeft = parseInt($box.css('left'))//表示内容块被偏移的值
 //鼠标按下事件
 box.addEventListener('mousedown', function(e) {
  //更改鼠标状态
  //参数e为鼠标
  mouseState = true
  //获取鼠标坐标
  startX = e.clientX
  startY = e.clientY
  //鼠标拖动初始化
  moveDirection = 0
  $boxLeft = parseInt($box.css('left'))
 })
 //鼠标移动状态
 box.addEventListener('mousemove', function(e) {
  //判断鼠标是不是被按下中移动
  if(mouseState) {
  //判断是向左还是向右拖动鼠标
  moveDirection = e.clientX - startX
  //向右移动
  box.style.left = $boxLeft + moveDirection + 'px'
  }
 })
 //鼠标弹起事件
 box.addEventListener('mouseup', function(e) {
  mouseState = false
  if(moveDirection > 0) {
  //$boxLeft<0表示已经看到最左的模块,不能在向右拖拉
  $boxLeft = parseInt($box.css('left'))
  //取余,比如拖动了52px,实际内容块就250px,偏移余下的px就能看的完整的内容块
  $num = $boxLeft % 250
  if($boxLeft < 0) {
   $box.animate({
   left: $boxLeft - $num + 'px'
   }, 500, function() {
   console.log(parseInt($box.css('left')))
   })
  } else {
  //向右偏移,如果$boxLeft大于等于0的话 那就是还是第一个颜色模块,不允许被偏移
   $box.animate({
   left: 0 + 'px'
   }, 500, function() {})
  }
  } else if(moveDirection < 0) {
  //$boxLeft>-750表示已经看到最右边的模块,不能在向左拖拉
  $boxLeft = parseInt($box.css('left'))
  $num = 250 + $boxLeft % 250
  if($boxLeft > -750) {
   $box.animate({
   left: $boxLeft - $num + 'px'
   }, 500, function() {
   console.log(parseInt($box.css('left')))
   })
  }else{
  //向左偏移,如果$boxLeft小于等于-750px的话 那就是最后一个颜色模块,不允许被偏移
   $box.animate({
   left: -750 + 'px'
   }, 500, function() {})
  }
  }
 })
</script>

OK了。应该能看的懂了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
Jul 14 Javascript
基于JQuery实现异步刷新的代码(转载)
Mar 29 Javascript
jQuery中scrollLeft()方法用法实例
Jan 16 Javascript
jQuery简单几行代码实现tab切换
Mar 10 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
Sep 17 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
Nov 18 Javascript
Javascript 判断两个IP是否在同一网段实例代码
Nov 28 Javascript
bootstrap fileinput 插件使用项目总结(经验)
Feb 22 Javascript
ECMAScript6--解构
Mar 30 Javascript
vue自定义一个v-model的实现代码
Jun 21 Javascript
比较node.js和Deno
Apr 27 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
Jan 14 #Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 #Javascript
微信小程序canvas截取任意形状的实现代码
Jan 13 #Javascript
js实现列表向上无限滚动
Jan 13 #Javascript
vue 组件销毁并重置的实现
Jan 13 #Javascript
VUE实现自身整体组件销毁的示例代码
Jan 13 #Javascript
微信小程序聊天功能的示例代码
Jan 13 #Javascript
You might like
4.与数据库的连接
2006/10/09 PHP
PHP 得到根目录的 __FILE__ 常量
2008/07/23 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
jQuery代码优化 选择符篇
2011/11/01 Javascript
Nodejs学习笔记之Global Objects全局对象
2015/01/13 NodeJs
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
js继承实现方法详解
2016/12/16 Javascript
Jquery与Bootstrap实现后台管理页面增删改查功能示例
2017/01/22 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
python实现代码行数统计示例分享
2014/02/10 Python
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
利用python将pdf输出为txt的实例讲解
2018/04/23 Python
python使用writerows写csv文件产生多余空行的处理方法
2019/08/01 Python
python并发编程多进程 互斥锁原理解析
2019/08/20 Python
python中time库的实例使用方法
2019/10/31 Python
python爬虫请求头设置代码
2020/07/28 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
教师年终个人自我评价
2013/10/04 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
大学生入党群众意见书
2015/06/02 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书
银行求职信怎么写
2019/06/20 职场文书
工作一年自我鉴定
2019/06/20 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
python 下划线的多种应用场景总结
2021/05/12 Python
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang