限时优惠活动
亲爱的苦力吧用户,我们为了回馈新老用户一直以来的鼎力支持,即日起(2025-02-06至2025-03-06)凡是购买苦力吧VIP/充值K币的新老用户,都直接可获得买一送一的优惠馈赠。例如:购买一个月的VIP会员可直接获得两个月的VIP会员;充值100K币可直接获得200K币,以此类推!有任何疑问可联系在线客服,感谢各位用户对苦力吧素材的信任与厚爱,我们将一如既往的给大家上新更多优质的素材源码,祝大家开工大吉、工作顺利、心想事成。

javascript实现的支持移动端触摸鼠标拖拽的DIV元素

所属分类: 网页特效-其它&杂项    2023-11-25 11:24:20

javascript实现的支持移动端触摸鼠标拖拽的DIV元素 ie兼容6
 查看演示  登录后下载 温馨提示
登录会员即可享受免费下载
 我要建站

javascript实现的支持移动端触摸鼠标拖拽的DIV元素(共3个文件)

    • index.html

使用方法

let mover;
let offsets;
let position;

function addEvent(type, callback, target = document) {target.addEventListener(type, callback, false);}
function removeEvent(type, callback, target = document) {target.removeEventListener(type, callback);}

function offsetPosition(target) {
  let node = target;
  let X = 0;
  let Y = 0;

  do {
    X += node.offsetLeft;
    Y += node.offsetTop;
    node = node.offsetParent;
  } while (
  node);

  return { X, Y };
}
function parentsUntilMatch(target, filter) {
  if (!target || target.nodeType === 9) return null;
  switch (true) {
    case 'matchesSelector' in target:
      if (target.matchesSelector(filter)) return target;
      break;
    case 'mozMatchesSelector' in target:
      if (target.mozMatchesSelector(filter)) return target;
      break;
    case 'msMatchesSelector' in target:
      if (target.msMatchesSelector(filter)) return target;
      break;
    case 'oMatchesSelector' in target:
      if (target.oMatchesSelector(filter)) return target;
      break;
    case 'webkitMatchesSelector' in target:
      if (target.webkitMatchesSelector(filter)) return target;
      break;
    default:
      if (target.matches(filter)) return target;
      break;}

  return parentsUntilMatch(target.parentNode, filter);
}
function styleStringFromObj(obj) {
  let str = '';

  for (const prop in obj) {
    str += `${prop}:${obj[prop]};`;
  }

  return str;
}

function mousedown(isTouch = false) {
  const MOVE = isTouch ? 'touchmove' : 'mousemove';
  const END = isTouch ? 'touchend' : 'mouseup';

  return function caller(evt) {
    const target = parentsUntilMatch(evt.target, '.js-is-draggable');

    if (!target) return;

    mover = target;
    offsets = { X: evt.pageX, Y: evt.pageY };
    position = offsetPosition(mover);
    mover.setAttribute('style', styleStringFromObj({
      position: 'relative',
      top: `${position.Y}px`,
      left: `${position.X}px` }));


    mover.classList.add('js-is-dragging');
    mover.setAttribute('aria-grabbed', true);

    addEvent(MOVE, mousemove);
    addEvent(END, mouseup(isTouch));
  };
}
function mousemove(evt) {
  // evt.preventDefault();
  // new offsets based on mouse position
  const newOffsets = {
    X: evt.pageX,
    Y: evt.pageY };


  const newY = position.Y + (newOffsets.Y - offsets.Y);
  const newX = position.X + (newOffsets.X - offsets.X);

  // update styles
  mover.style.top = newY + 'px';
  mover.style.left = newX + 'px';

  // update object
  offsets = newOffsets;

  // update position
  position = { X: newX, Y: newY };
}
function mouseup(isTouch = false) {
  const MOVE = isTouch ? 'touchmove' : 'mousemove';
  const END = isTouch ? 'touchend' : 'mouseup';

  return function caller(evt) {
    removeEvent(MOVE, mousemove);
    removeEvent(END, caller);

    mover.classList.remove('js-is-dragging');
    mover.setAttribute('aria-grabbed', false);

    mover = offsets = position = undefined;
  };
}

addEvent('mousedown', mousedown());
addEvent('touchstart', mousedown(true));

站长提示:
1. 苦力吧素材官方QQ群:950875342
2. 平台上所有素材资源,需注册登录会员方能正常下载。
3. 会员用户积极反馈网站、素材资源BUG或错误问题,每次奖励2K币
4. PHP源码类素材,如需协助安装调试,或你有二次开发需求,可联系苦力吧客服。
5. 付费素材资源,需充值后方能下载,如有任何疑问可直接联系苦力吧客服
相关资源 / 其它&杂项

jquery浮动滚动条插件

一款浮动的横向滚动条插件,当滚动右侧垂直滚动条时,该滚动条始终显示,
  其它&杂项
 7337  0

jq倒计时10秒延迟跳转

10s倒计时完成后,自动显示“点击进入页面”按钮,点击即可打开连接。
  其它&杂项
 5323  0

jquery随机显示表格选项卡插件

一款随机化显示一个表格选项卡对象插件,随机轮流显示表格单元格内容。
  其它&杂项
 9165  0

javascript带cookie本地存储的购物车代码

这是一款可本地存储保存购物车信息代码,带“清空购物车”、“结算”功能,还有自动计算购物车总价。
  其它&杂项
 4323  0

评论数(0) 回复有机会获得K币 用户协议

^_^ 还没有人评论,快来抢个沙发!
😀
  • 😀
  • 😊
  • 😂
  • 😍
  • 😑
  • 😷
  • 😵
  • 😛
  • 😣
  • 😱
  • 😋
  • 😎
  • 😵
  • 😕
  • 😶
  • 😚
  • 😜
  • 😭
发表评论