JavaScript实现拖拽盒子效果


Posted in Javascript onFebruary 06, 2020

本文实例为大家分享了JavaScript实现拖拽盒子效果的具体代码,供大家参考,具体内容如下

实现效果:

1.单击关闭,关闭盒子
2.点击左上方‘点击注册',打开盒子
3.鼠标放在盒子上方蓝色区域显示十字
4.点击鼠标不松开就可移动盒子
5.松开鼠标图片暂停

JavaScript实现拖拽盒子效果

实现步骤:

1.在页面最上方设置一个盒子,里面有一个超链接,超链接里面设置href="javascript:void(0);",再点击时不打开网页。

2.再设置一个可以拖拽的盒子,盒子嵌套一个蓝色盒子为的最上方的蓝色区域,蓝色盒子里面两个span标签,里面写‘关闭'和‘可拖拽'。

3.给‘关闭'的盒子注册点击事件,点击后,拖拽盒子样式为none,(不显示)
给最上方的超链接设置点击事件,点击后,拖拽盒子样式为block,(显示)  

4.给上方蓝色盒子设置onmousedown(鼠标点击事件),同时获取鼠标点击位置
离拖拽盒子的距离,为mouseLeft和mouseTop

5.给页面(document)设置onmousemove事件让鼠标的位置分别减去mouseLeft和mouseTop,得到盒子左上角随鼠标移动的坐标,再将坐标赋值给拖拽盒子

6.最后设置onmouseup事件,鼠标松开时页面不移动。即document.onmousemove = null

实现细节:

1.让拖拽盒子居中显示:top:50%;  left: 50%; 
       margin-left :-155px;  margin-top:-155px;
      ( margin-left: -(盒子宽度的一半); 这里盒子宽度300px边框为5px,总宽度310px,
      所以设置-155px, margin-top:-(盒子高度的一半),和宽度同理)

2.var evt = event || window.event;兼容性写法。

代码:

<!DOCTYPE html>
<html>
<head>
 <title>拖拽盒子</title>
 <style type="text/css">
 *{
 margin:0px;
 padding:0px;
 }
 .dropBox{
 width:300px;
 height:300px;
  top:50%;
  left:50%;
  margin-left: -155px;
  margin-top: -155px;
  display: block;
 border: 5px solid #aaa;
 position: absolute;
 }

 .nav{
 width: 100%;
 height:30px;
 background-color: blue;
 opacity: 0.6;
 }
 .nav a{
 font-size:15px;
 color:white;
 }
 .dropBox .box{
 width:300px;
 height:30px;
 position: absolute;
 left:0px;
 top:0px;
 background-color: darkblue;
 opacity: 0.8;
 cursor:move;
 }
 .close{
 float: right;
 color:white;
 font-size: 15px;
 cursor: pointer;
 }
 .move{
 color:white;
 font-size: 15px;
 }
 </style>
 <script type="text/javascript">
 function $(id){
 return document.getElementById(id);
 }
 window.onload = function(){
 var register = $('register');
 var dropBox = $('dropDiv');
 var box = $('box');
 var box2 = $('box2');
 box2.onclick = function(){
  dropBox.style.display = 'none';
 }
 register.onclick = function(){
  dropBox.style.display = 'block';
 }
  box.onmousedown = function(event){
  var evt = event || window.event;
  var mouseLeft = evt.clientX - dropBox.offsetLeft;
  var mouseTop = evt.clientY - dropBox.offsetTop;
  document.onmousemove = function(event){
  var evt = event || window.event;
  var x = evt.clientX - mouseLeft;
  var y = evt.clientY - mouseTop;
  dropBox.style.left = x + 155 + 'px';
  dropBox.style.top = y + 155 + 'px';
  }
  document.onmouseup = function (){
 document.onmousemove = null;
  }
  }

 }



 </script>
</head>
<body>
 <div class="nav">
 <a href="javascript:void(0);" id="register">点击注册</a>
 </div>
 <div class="dropBox" id="dropDiv">
 <div class="box" id="box">
 <span class="move">注册信息(可以拖拽)</span>
 <span class="close" id="box2">【关闭】</span>
 </div>
 
 </div>
</body>
</html>

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

Javascript 相关文章推荐
JS启动应用程序的一个简单例子
May 11 Javascript
鼠标右击事件代码(asp.net后台)
Jan 27 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
Feb 23 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
JavaScript原生对象之String对象的属性和方法详解
Mar 13 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
Vue制作Todo List网页
Apr 26 Javascript
Vue侧滑菜单组件——DrawerLayout
Dec 18 Javascript
vue 子组件向父组件传值方法
Feb 26 Javascript
vue自定义tap指令及tap事件的实现
Sep 18 Javascript
Vue开发Html5微信公众号的步骤
Apr 11 Javascript
原生JS利用transform实现banner的无限滚动示例代码
Jun 15 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
Feb 06 #Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 #Javascript
详细介绍解决vue和jsp结合的方法
Feb 06 #Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
Feb 06 #Javascript
js get和post请求实现代码解析
Feb 06 #Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 #Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 #Javascript
You might like
一个PHP日历程序
2006/12/06 PHP
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
php实现的在线人员函数库
2008/04/09 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
angular directive的简单使用总结
2017/05/24 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
2018/06/05 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
vue-cli3配置favicon.ico和title的流程
2020/10/27 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
PyQt5+Caffe+Opencv搭建人脸识别登录界面
2019/08/28 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
浅析NumPy 切片和索引
2020/09/02 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
建筑自我鉴定
2013/10/19 职场文书
经理职责范文
2013/11/08 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
班主任先进事迹材料
2014/12/17 职场文书
戒赌保证书
2015/05/11 职场文书
汉语拼音教学反思
2016/02/22 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技