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 相关文章推荐
javascript如何判断输入的url是否正确
Apr 11 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
Feb 25 Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
webpack实现一个行内样式px转vw的loader示例
Sep 13 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
Dec 21 Javascript
JS实现的贪吃蛇游戏案例详解
May 01 Javascript
echarts多条折线图动态分层的实现方法
May 24 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 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
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
Javascript 构造函数 实例分析
2008/11/26 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
完美解决IE9浏览器出现的对象未定义问题
2016/09/29 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
小程序两种滚动公告栏的实现方法
2019/09/17 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
Python中拆分字符串的操作方法
2019/07/23 Python
Django之PopUp的具体实现方法
2019/08/31 Python
python实现XML解析的方法解析
2019/11/16 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
吸烟检讨书2000字
2014/02/13 职场文书
初三学习决心书
2014/03/11 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书