拖拽效果在网页中很常见。实现起来也不难。记录一下今天实现的简单效果。
快速拖动时,会出现问题,以后修改.
说白了,就是3个点击事件。
1. 按下鼠标左键, 触发点击事件,此时记录下可以得到鼠标相对于拖动控件的位置(当前鼠标位置-控件位置);
2. 拖动鼠标,触发移动事件,可以计算出鼠标移动的距离(当前鼠标位置-之前算出的相对位置),也就是拖拽控件所移动的距离;
3. 鼠标抬起,结束拖动。
在JQ中,event.pageX event.pageY可以获取鼠标的位置,相对于文档左上角。
如图:
注意,在jq获取控件的位置时:
x=event.pageX-parseInt($("#box").css("left"));
y=event.pageY-parseInt($("#box").css("top"));
要去掉单位px.
但是 在修改控件位置时,不要加单位,也不要加引号,也不用加单位px!
dx=event.pageX-x;
dy=event.pageY-y;
//不要加引号!!!
$("#box").css({
"top":dy,"left":dx
})
完整代码:
[html] view plaincopy
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
- <head>
- <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
- <title>弹出层,移动</title>
- <script src="jq11.js"></script>
- <script>
- //x,y为鼠标离控件左上角的相对位置
- var x=0;
- var y=0;
- var flag=false;
- $(document).ready(function(){
- $("button").click(function(){
- $("#box").show();
- })
- $("h3").mousedown(function(event){
- //判断鼠标左键
- if(event.which==1){
- flag=true;
- x=event.pageX-parseInt($("#box").css("left"));
- y=event.pageY-parseInt($("#box").css("top"));
- }
- })
- $("h3").mousemove(function(event){
- if(flag){
- //dx,dy鼠标移动的距离
- var dx=0;
- var dy=0;
- dx=event.pageX-x;
- dy=event.pageY-y;
- //不要加引号!!!
- $("#box").css({
- "top":dy,"left":dx
- })
- }
- })
- $("h3").mouseup(function(event) {
- flag=false;
- });
- $("span").click(function(){
- $("#box").hide();
- //关闭之后,应返回原来的位置
- $("#box").css({
- top:120,left:120
- })
- })
- })
- </script>
- </head>
- <style type="text/css">
- *{margin:0px;
- padding: 0px;}
- body{
- font-size: 14px;
- padding: 100px;
- }
- #box{
- width:500px;
- height:400px;
- border:3px ridge #ccc;
- display: none;
- box-shadow: 2px 2px 20px #888888;
- position:absolute;
- top:120px;
- left:120px;
- }
- #box h3{
- height:30px;
- line-height: 30px;
- background-color: #ABCDEF;
- padding-left: 10px;
- padding-right:10px;
- color: white;
- cursor: move;
- }
- #box span{
- float: right;
- font-size: 12px;
- cursor: pointer;
- color:red;
- }
- #box p{
- height:350px;
- padding: 10px;
- box-shadow: 3px 3px 10px #aaa inset;
- background: #FAFAFA;
- }
- </style>
- <body>
- <button>弹出</button>
- <div id="box">
- <h3><span>关闭</span>鼠标左键拖动</h3>
- <hr/>
- <p>有点小问题,不能快速的拖动,慢慢拖吧。。。以后有时间修改</p>
- </div>
- </body>
- </html>
时间: 2024-11-08 22:16:06