js实现弹框的拖动效果

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style type="text/css">
		body{position:relative;}
		*{padding:0;margin:0;}
		.dialog{width:400px;height:400px;border:1px solid #ddd;position:fixed;top:100px;left:200px;}
		.dialog h2{height:40px;background:purple;cursor:move;}
		.mask{position:fixed;width:0;height:0;left:0;top:0;display:none;border: 3px solid #eee;box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.07);cursor:move;}
	</style>
</head>
<body>
	<div class="dialog" id="box">
		<h2 id=‘digTit‘></h2>
	</div>
	<div class="mask"></div>
	<script type="text/javascript">
		var dragEle = document.getElementById(‘digTit‘)
		var box = document.getElementById(‘box‘)
		var x,y // 物体离上边,下边的距离
		var moveBox = document.querySelector(‘.mask‘) // 移动的是这层
		// 设置居中
		var oldX = (document.documentElement.clientWidth-box.offsetWidth)/2
		var oldY = (document.documentElement.clientHeight-box.offsetHeight)/2
		box.style.left = oldX + ‘px‘
		box.style.top = oldY + ‘px‘
		moveBox.style.left = oldX + ‘px‘
		moveBox.style.top = oldY + ‘px‘
		moveBox.style.width = box.offsetWidth + ‘px‘
		moveBox.style.height = box.offsetHeight + ‘px‘

		digTit.addEventListener(‘mousedown‘, function (e) {
			moveBox.style.display = ‘block‘
			var beginX = e.clientX
			var beginY = e.clientY

			document.addEventListener(‘mousemove‘, move, false)
			document.addEventListener(‘mouseup‘, up, false)

			function move(e) {
				x = oldX + e.clientX - beginX
				y = oldY + e.clientY - beginY
				moveBox.style.left = x + ‘px‘
				moveBox.style.top = y + ‘px‘
			}

			function up(e) {
				box.style.left = x + ‘px‘
				box.style.top = y + ‘px‘
				oldX = x
				oldY = y
				moveBox.style.display = ‘none‘
				document.removeEventListener(‘mousemove‘, move, false)
				document.removeEventListener(‘mouseup‘, up, false)
			}
		}, false)
	</script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/hesj/p/11714844.html

时间: 2025-01-17 07:48:34

js实现弹框的拖动效果的相关文章

js 实现win7任务栏拖动效果

前言 在某个时刻, 我认识了一个朋友. 此人在我的教唆下, 踏上了js的不归路. 前天他问我, Win7任务栏拖动效果怎么实现. 我随口就跟他说, 这简单的一逼. 在我一晚上的折腾之后, 一份潦草的代码总算实现了功能. PS: 我是搞C++的, js略懂一二.. 源码 话不多说, 上源码. 1 // 常量 2 var CELL_WIDTH = 100; 3 var CELL_HEIGHT = 50; 4 5 var Utils = { 6 pixelToInt: function(str) 7

CSS3新vw, vh单位与纯CSS定位的弹框屏幕居中效果实例页面

在css中vw和vh分别代表所占的百分比,可以设置最外部的容器的宽高,但是都要结合百分比一起使用. 展示 回到相关文章 ? 图片宽度(目前1024像素): 128  1024 点击我出现图片弹框 代码CSS代码:.dialog_container {    display: none;    width: 100%;    width: 100vw;    height: 100%;    height: 100vh;    background-color: rgba(0,0,0,.35); 

JS 功能弹框封装

// 功能提示弹框 function messageBox ( option ) { var html = ''; html += '<div class="message-box-head">' + option.title; html += '<i class="icon iconfont message-close"></i></div>'; if ( option.type == 'using' ) { ht

js创建弹框(提示框,待确认框)

html,body,div,h1,h2,h3,h4,h5,h6,p,table,form,label,ol,ul,li,dl,dt,dd,img,p{margin:0; padding:0;} html,body{text-size-adjust:none;-webkit-text-size-adjust:none;-webkit-user-select:none;} a{color:#333; text-decoration:none;} a,input:focus,div,select{ta

js showModalDialog弹框用法

场景: 我要做一个图片上传,上传成功后,弹出一个页面,填写其他信息. 上传图片的界面: 选择文件之后,点击[上传]按钮, 选择确定之后,图片上传到服务器,同时服务器会返回json字符串,其中有图片路径,此时使用window.showModalDialog,弹出一个网页,网页中要获取图片地址,用于显示图片 父页面关键代码: var options = {    url: "<%=path%>/upload/upload",    type: "POST",

js模拟弹框选择文件夹

var inputObj = document.createElement('input'); inputObj.setAttribute('id', '_ef'); inputObj.setAttribute('type', 'file'); inputObj.setAttribute("style", 'visibility:hidden'); document.body.appendChild(inputObj); inputObj.click(); //选择 $(inputOb

实现自己自定义的弹框和遮罩层

有的时候我们需要实现属于自己的弹框和弹出框的遮罩层效果,下面我给大家讲一下有javascript实现最简单的属于自己的弹框和弹框遮罩层效果,首先编写遮罩层的javascript,代码如下: 1.遮罩层js: //获得坐标 function getPosition() { var top = document.documentElement.scrollTop; var left = document.documentElement.scrollLeft; var height = documen

简单的鼠标拖动效果

使用js实现简单的鼠标拖动效果,但此部分代码有个小小的BUG,后期改进好我会写进来,但基本的效果已经实现,请大家参考. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标移动</title> <style> #box{ width: 50px; height: 50px; position:

iOS:类似于网易云音乐的刷新条目显示弹框

一.介绍 在app中使用刷新控件或者第三方刷新库是最常见的功能,在请求服务器时,获取数据的过程是处于不可见状态的,那么通过这个刷新状态可以给用户以直观的感受,这是增强用户体验的一个相当好的方法.我个人认为,有时这个方法仍有不足,就是当拉取到数据时,用户只是知道数据有了,并没有直接告知用户拉取了或者刷新了多少条数据.所以,这里我写了一个类似于网易云音乐的"朋友"模块中的一个刷新条目显示弹框. 二.思想 1.创建一个messageView,内部包含一个label,使用masonry约束,将