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 相关文章推荐
让任务管理器中的CPU跳舞的js代码
Nov 01 Javascript
XmlUtils JS操作XML工具类
Oct 01 Javascript
javascript实现yield的方法
Nov 06 Javascript
纯js写的分页表格数据为json串
Feb 18 Javascript
jQuery实现DIV层收缩展开的方法
Feb 27 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
Oct 31 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
jquery 判断div show的状态实例
Dec 03 Javascript
Bootstrap 3 按钮标签实例代码
Feb 21 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 Javascript
sharp.js安装过程中遇到的问题总结
Apr 02 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
php接口隔离原则实例分析
2019/11/11 PHP
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
js实现进度条的方法
2015/02/13 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
[50:17]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python的常见命令注入威胁
2013/02/18 Python
python超简单解决约瑟夫环问题
2015/05/12 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
python操作mysql数据库
2017/03/05 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
使用python批量转换文件编码为UTF-8的实现
2020/04/03 Python
HTML5中drawImage用法分析
2014/12/01 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
毕业生就业自荐书
2013/12/15 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
高三语文教学反思
2016/02/16 职场文书
创业计划书之物流运送
2019/09/17 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
vue实现简易音乐播放器
2022/08/14 Vue.js