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 相关文章推荐
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
Sep 11 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
javascript实现复选框选中属性
Mar 25 Javascript
angularjs学习笔记之简单介绍
Sep 26 Javascript
jQuery取得iframe中元素的常用方法详解
Jan 14 Javascript
实现一个简单的vue无限加载指令方法
Jan 10 Javascript
微信小程序 template模板详解及实例
Feb 21 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
jQuery实现购物车的总价计算和总价传值功能
Nov 28 jQuery
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
细说webpack6 Babel的使用详解
Sep 26 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
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
浅析PHP 按位与或 (^ 、&amp;)
2013/06/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
php支付宝接口用法分析
2015/01/04 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
js+css在交互上的应用
2010/07/18 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
node.js中的http.response.getHeader方法使用说明
2014/12/14 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
angularjs数组判断是否含有某个元素的实例
2018/02/27 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
webpack4.0 入门实践教程
2018/10/08 Javascript
微信小程序iOS下拉白屏晃动问题解决方案
2019/10/12 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
vue实现井字棋游戏
2020/09/29 Javascript
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python实现的简单dns查询功能示例
2017/05/24 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
Django中的Model操作表的实现
2018/07/24 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
意大利男装网店:Vrients
2019/05/02 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
标准版离职证明书
2014/09/12 职场文书
初二英语教学反思
2016/02/15 职场文书
baselines示例程序train_cartpole.py的ImportError
2022/05/20 Python