• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JavaScript > js元素拖拽

js元素拖拽

作者:Prince_fmx的博客 字体:[增加 减小] 来源:互联网 时间:2017-09-11

Prince_fmx的博客通过本文主要向大家介绍了js元素拖动等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

很多时候,发现页面弹出的显示框能够挪动,如何实现呢?

其实就是事件监听罢了。

思路:1,因为可以拖动,所以该元素的定位是绝对定位而不是相对定位;

2,当鼠标按下时才可以拖动,需要鼠标点击动作,onmousedown;

3,鼠标移动时元素跟随鼠标移动,onmousemove;

4,鼠标抬起时元素不在可以拖动;onmouseup;

5,鼠标移动的横纵长度可用鼠标移动中得到坐标减去该元素的left和top值。

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style></style>
</head>
<body>
<div class="move-container">
<div class="move" style="position:absolute; width:100px; height:100px; background:gray">
</div>
</div>
<script>
var moveElem = document.querySelector('.move'); //待拖拽元素      


var dragging; //是否激活拖拽状态
var tLeft, tTop; //鼠标按下时相对于选中元素的位移


//监听鼠标按下事件
document.addEventListener('mousedown', function(e) {
if(e.target == moveElem) {


dragging = true; //激活拖拽状态
var moveElemRect = moveElem.getBoundingClientRect();
tLeft = e.clientX - moveElemRect.left; //鼠标按下时和选中元素的坐标偏移:x坐标
tTop = e.clientY - moveElemRect.top; //鼠标按下时和选中元素的坐标偏移:y坐标
}
});


//监听鼠标放开事件
document.addEventListener('mouseup', function(e) {
dragging = false;
});


//监听鼠标移动事件
document.addEventListener('mousemove', function(e) {
if(dragging) {
var moveX = e.clientX - tLeft,
moveY = e.clientY - tTop;


moveElem.style.left = moveX + 'px';
moveElem.style.top = moveY + 'px';
}
});
</script>
</body>
</html>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11Express URL跳转(重定向)的实现方法
  • 2017-05-11bootstrap fileinput 上传插件的基础使用
  • 2017-05-11原生JS改变透明度实现轮播效果
  • 2017-05-11基于Vue实现timepicker
  • 2017-05-11微信小程序实战之轮播图(3)
  • 2017-05-11JS简单获取当前年月日星期的方法示例
  • 2017-05-11JavaScript中从setTimeout与setInterval到AJAX异步
  • 2017-05-11简单的jQuery拖拽排序效果的实现(增强动态)
  • 2017-05-11JS实现的表头列头固定页面功能示例
  • 2017-08-26children和childNodes 的区别

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • EasyUI修改DateBox和DateTimeBox的默认日期格式示例
    • 提高JavaScript执行效率的23个实用技巧
    • jQuery动态移除和添加背景图片的方法详解
    • bootstrap日期控件问题(双日期、清空等问题解决)
    • webpack独立打包和缓存处理详解
    • 浅谈angularjs依赖服务注入写法的注意点
    • Mongoose学习全面理解(推荐)
    • 微信小程序 下拉菜单简单实例
    • js实现交通灯效果
    • jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有