`
kely39
  • 浏览: 49300 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DIV随鼠标拖动效果

阅读更多

直接贴代码:

<html>
<head>
<title>_xWin</title>
<script language=JScript>
<!--
//可以打包为js文件;
var x0=0,y0=0,x1=0,y1=0;
var offx=6,offy=6;
var moveable=false;
var hover='orange',normal='slategray';//color;
var index=10000;//z-index;
var xx;
//开始拖动;
function startDrag(obj)
{
         if(event.button==1)
         {
                 //锁定标题栏;
                 obj.setCapture();
                 //定义对象;
                 var win = obj.parentNode;
                 var sha = win.nextSibling;
                 //记录鼠标和层位置;
                 x0 = event.clientX;
                 y0 = event.clientY;
                 x1 = parseInt(win.style.left);
                 y1 = parseInt(win.style.top);
                 //记录颜色;
                 normal = obj.style.backgroundColor;
                 //改变风格;
                 obj.style.backgroundColor = hover;
                 win.style.borderColor = hover;
                 obj.nextSibling.style.color = hover;
                 sha.style.left = x1 + offx;
                 sha.style.top   = y1 + offy;
                 moveable = true;
         }
}
//拖动;
function drag(obj)
{
         if(moveable)
         {
                 var win = obj.parentNode;
                 var sha = win.nextSibling;
                 win.style.left = x1 + event.clientX - x0;
                                 sha.style.left = parseInt(win.style.left) + offx;
                                 if ((y1 + event.clientY - y0)>0 && (y1 + event.clientY - y0)<600){
                 win.style.top   = y1 + event.clientY - y0;
                 sha.style.top   = parseInt(win.style.top) + offy;
                 }
         }
}
//停止拖动;
function stopDrag(obj)
{
         if(moveable)
         {
                 var win = obj.parentNode;
                 var sha = win.nextSibling;
                 var msg = obj.nextSibling;
                 win.style.borderColor      = normal;
                 obj.style.backgroundColor = normal;
                 msg.style.color            = normal;
                 sha.style.left = obj.parentNode.style.left;
                 sha.style.top   = obj.parentNode.style.top;
                 obj.releaseCapture();
                 moveable = false;
         }
}
//获得焦点;
function getFocus(obj)
{
         if(obj.style.zIndex!=index)
         {
                 index = index + 2;
                 var idx = index;
                 obj.style.zIndex=idx;
                 obj.nextSibling.style.zIndex=idx-1;
         }
}
//最小化;
function min(obj)
{
         var win = obj.parentNode.parentNode;
         var sha = win.nextSibling;
         var tit = obj.parentNode;
         var msg = tit.nextSibling;
         var flg = msg.style.display=="none";
         if(flg)
         {
                 win.style.height   = parseInt(msg.style.height) + parseInt(tit.style.height) + 2*2;
                 sha.style.height   = win.style.height;
                 msg.style.display = "block";
                 obj.innerHTML = "0";
         }
         else
         {
                 win.style.height   = parseInt(tit.style.height) + 2*2;
                 sha.style.height   = win.style.height;
                 obj.innerHTML = "2";
                 msg.style.display = "none";
         }
}
//关闭;
function cls(obj)
{
         var win = obj.parentNode.parentNode.parentNode;
         //var sha = win.nextSibling;
         win.style.visibility = "hidden";
         //sha.style.visibility = "hidden";
}
//显示/隐藏;
function ShowHide()
{
         if (xx!=null)
                         if (xx.style.visibility == "hidden")
                                 xx.style.visibility = "visible";
                         else if (xx.style.visibility == "visible")
                                 xx.style.visibility = "hidden";
}
//创建一个对象;
function xWin(id,w,h,l,t,tit,msg)
{
         index = index+2;
         this.id       = id;
         this.width    = w;
         this.height   = h;
         this.left     = l;
         this.top      = t;
         this.zIndex   = index;
         this.title    = tit;
         this.message = msg;
         this.obj      = null;
         this.bulid    = bulid;
         this.bulid();
         xx = document.getElementById('allx');
         xx.style.visibility = "visible";
}
//初始化;
function bulid()
{
         var str = ""
                 + "<div id='allx'><div id='xMsg'" + this.id + " "
                 + "style='"
                 + "z-index:" + this.zIndex + ";"
                 + "width:" + this.width + ";"
                 + "height:" + this.height + ";"
                 + "left:" + this.left + ";"
                 + "top:" + this.top + ";"
                 + "background-color:" + normal + ";"
                 + "color:" + normal + ";"
                 + "font-size:11px;"
                 + "font-family:Verdana;"
                 + "position:absolute;"
                 + "cursor:default;"
                 + "border:2px solid " + normal + ";"
                 + "' "
                 + "onmousedown='getFocus(this)'>"
                         + "<div "
                         + "style='"
                         + "background-color:" + normal + ";"
                         + "width:" + (this.width-2*2) + ";"
                         + "height:20;"
                         + "color:white;"
                         + "' "
                         + "onmousedown='startDrag(this)' "
                         + "onmouseup='stopDrag(this)' "
                         + "onmousemove='drag(this)' "
                         + "ondblclick='min(this.childNodes[1])'"
                         + ">"
                                 + "<span style='width:" + (this.width-2*14-4) + ";padding-left:3px;'>" + this.title + "</span>"
                                 + "<span style='width:14;border-width:0px;color:white;font-family:webdings;' onclick='min(this)'>0</span>"
                                 + "<span style='width:14;border-width:0px;color:white;font-family:webdings;' onclick='cls(this)'>r</span>"
                         + "</div>"
                                 + "<div style='"
                                 + "width:100%;"
                                 + "height:" + (this.height-20-4) + ";"
                                 + "background-color:white;"
                                 + "line-height:14px;"
                                 + "word-break:break-all;"
                                 + "padding:3px;"
                                 + "'>" + this.message + "</div>"
                 + "</div>"
                 + "<div id='xshadow' style='"
                 + "width:" + this.width + ";"
                 + "height:" + this.height + ";"
                 + "top:" + this.top + ";"
                 + "left:" + this.left + ";"
                 + "z-index:" + (this.zIndex-1) + ";"
                 + "position:absolute;"
                 + "background-color:black;"
                 + "filter:alpha(opacity=40);"
                 + "'>by wildwind</div></div>";
         document.getElementById('msgbox').innerHTML = str;
                
                
}
//-->
</script>
<script language='JScript'>
<!--
function initialize()
{
         var a = new xWin("1",460,400,200,200,"是要这个效果吗?","<br>这里有几点需要注意的地方:<br><br>1、xx这个变量是你自己添加的吧?想法是对的,但是放错了地方,你只在cls()这个方法里面给xx赋值,这就造成了这个对象在窗口第一次出现时由于没有被赋值(关闭按钮还没有被点击),导致无法获取,所以应该把对xx赋值这个工作放在窗口第一次初始化完成的地方,也就是xWin函数中,this.build语句之后。当然也可能你已经试过放在这里,但是发现根本不起作用,这就涉及到下一个要注意的问题了。<br><br>2、Build函数的最后,你是通过insertAdjacentHTML()方法把生成的代码放在了网页全部html标签之后,因此生成的代码中的对象在页面中使用getElementById()方法根本访问不到,所以才会不起作用,怎么改呢?方法很多,我是这样处理的,在页面body的关闭标签之前插入一个div,然后用innerHTML()方法写入。<br><br>3、对于代码,我进行了一点修正,因为发现你的cls()方法当中把xWin和他的阴影一并隐藏了,但是在ShowHide()方法中却只把xWin显示出来,这就导致关闭(实质上是hidden)后再打开的窗体已经没有了阴影,当然这也不算什么大问题,我在xWin和他的阴影外面套了一个allx的div,再把这个对象赋给xx,然后就可以一并隐藏一并显示了,更方便一些。<br><br>4、主要就是这几个地方,这个效果还是很不错的,不过程序结构还可以再优化一些,代码比较多,我也没有细看,稍微改了一下,可能不是最好的方法。大家继续提建议啊。希望对楼主能有帮助。");
}
window.onload = initialize;
//-->
</script>
</head>
<body onselectstart='return false' oncontextmenu='return false' scroll='no'>

<DIV class=textSheet 
style="BORDER-RIGHT: #3E8529 1px solid; BORDER-TOP: #639517 1px solid; BORDER-LEFT: #3E8529 1px solid; BORDER-BOTTOM: #3E8529 1px solid">
<table width="242" height="160" border="1" ID="Table2">
     <td align="center" valign="middle" style="cursor:hand;font-size:32px;color: #808080"   onMouseMove="bgColor='#ffff99'" onmouseout="bgColor='#FFFFFF'" onclick="ShowHide()">显示隐藏</td> 
</table>
</DIV>
<div id="msgbox"></div>
</body>
</html>

 

分享到:
评论

相关推荐

    JS实现鼠标拖动div移动(附效果演示).zip

    这可以通过`removeEventListener`方法实现,确保用户松开鼠标后,`div`不再随鼠标移动。 以下是一个简化的代码示例: ```javascript let div = document.querySelector('div'); let isDragging = false; let ...

    jquery div页面图片浮动层鼠标拖动效果代码.zip

    "jquery div页面图片浮动层鼠标拖动效果代码.zip"是一个示例项目,用于展示如何利用jQuery实现一个图片浮动层,并且允许用户通过鼠标拖动来移动这个浮动层。在这个压缩包中,我们有两个文件:`使用须知.txt`和`...

    jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】

    4. 防止默认行为和事件冒泡:在document的mousemove事件处理函数中,返回false,这样做可以防止浏览器的默认行为和阻止事件继续冒泡,确保只有被拖动的div会随鼠标移动,避免影响到其他元素。 5. 动态计算位置:在...

    javascript 鼠标拖动图标技术

    这个例子展示了如何使用JavaScript的基本事件处理和DOM操作来实现一个简单的鼠标拖动效果。然而,实际应用中可能需要考虑更多的边界条件和优化,例如限制拖动范围、处理多个可拖动元素、防止元素穿透等。此外,现代...

    DOM鼠标拖动

    4. **更新元素位置**:根据偏移量,更新元素的CSS `top`和`left`属性,使元素随鼠标移动。通常,我们会用到JavaScript的`style`对象来修改这些属性。 5. **边界限制**:为了防止元素拖出父容器或窗口范围,需要检查...

    jQuery实现div跟随鼠标移动

    在本示例中,我们探讨了如何使用jQuery实现一个div元素跟随鼠标移动的效果。这个功能在许多交互式网页设计中非常常见,例如悬浮菜单、拖动元素等。关键在于理解和处理鼠标位置与div元素位置之间的关系。 首先,我们...

    可以用鼠标拖动的DIV实现思路及代码

    通过捕获鼠标事件,计算鼠标与`DIV`的位置差,然后在鼠标移动时更新`DIV`的位置,实现了拖动效果。同时,为了防止`SELECT`元素的干扰,我们可以添加一个覆盖层来屏蔽它们。这样的功能可以广泛应用于网页中的各种交互...

    js实现鼠标拖动功能

    通过在`mousemove`事件中设置这些值,可以实现元素随鼠标移动的效果。 文中还提供了两个示例元素,分别是`#div`和`#div2`,它们都设置了`position:absolute`,这使得它们的位置可以脱离常规的文档流,并通过`left`...

    vue 弹框实现移动效果

    vue 弹框实现移动效果是指在 vue 项目中实现弹框的移动效果,使其可以被拖动和悬浮。下面将对实现这种效果的知识点进行详细的解释。 1. 自定义指令 在 vue 中,可以使用自定义指令来实现弹框的移动效果。自定义...

    HTML鼠标跟随特效

    `来使元素脱离文档流并随鼠标移动,以及利用`transition`或`animation`属性来实现平滑过渡。 3. JavaScript(JS)与JSP(JavaServer Pages):虽然标题中提到了JS和JSP,但通常实现鼠标跟随特效主要依赖JavaScript...

    JS实现点击按钮随机生成可拖动的不同颜色块示例

    - `onmousemove`事件:根据鼠标移动的位置更新`div`的`left`和`top`属性,实现拖动效果。 - `onmouseup`事件:鼠标抬起时,移除`onmousemove`和`onmouseup`事件监听,防止继续移动。 在实际应用中,你可能需要对...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    1.jquery+div随屏幕滚动特效(支持设置参数滚动) 2.jQuery字符插件之适合留言板的jquery文本框输入字符限制插件下载 3.jquery实现Tooltip提示(文字、链接、地图锚点),自带5种不同样式 4.jQuery实现支付宝隐藏...

    Jquery 自定义可移动的div弹窗

    同时,可以通过`cursor: move`改变鼠标指针,提示用户可以拖动弹窗: ```css .popup { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); /* 其他样式 */ } .popup .content { /...

    jsp 页面分割线,鼠标可以拖动

    当用户按下鼠标并移动时,分割线会随之移动,改变两侧内容的相对大小。这需要我们在JavaScript代码中计算鼠标的位置,并相应地更新分割线的位置。 实现这一功能的关键步骤包括: 1. 创建分割线HTML元素,并设置...

    js实现图片放大并跟随鼠标移动特效

    在网页设计中,为了提升用户体验,常常需要实现一些动态效果,比如图片放大并跟随鼠标移动的特效。这种特效常见于电商网站的商品展示,用户可以通过鼠标移动来预览商品的细节。本文将详细介绍如何使用JavaScript来...

    jQuery实现拖动效果的实例代码

    通过改变CSS的`left`和`top`属性,我们可以控制页面上的元素随鼠标移动。 以下是一个具体的实现拖动效果的示例代码: ```html &lt;!DOCTYPE html&gt; div { width: 100px; height: 100px; background: red; ...

    Jquery IU Draggable随着鼠标移动实现拖动.zip

    《jQuery UI Draggable:实现元素随鼠标移动的拖放功能》 在Web开发中,交互性和用户体验至关重要。jQuery UI库提供了一系列丰富的组件,使得开发者能够轻松实现复杂的用户界面功能,其中`Draggable`就是用于创建可...

    AJAX可以拖动的DIV块特效代码

    4. **更新位置**:根据偏移量,更新DIV元素的CSS `left`和`top`属性,使得其位置随鼠标移动。 5. **AJAX交互**:当用户释放鼠标(`mouseup`事件)时,可以使用AJAX将新的DIV位置发送到服务器,保存或更新状态。这...

    jQuery拖动任意层

    在本示例中,我们将深入探讨如何利用jQuery实现网页上的层(通常指的是div元素)的拖动功能。这对于创建交互式用户界面,如可移动的对话框或自定义布局,是非常有用的。 首先,我们需要理解jQuery的基本概念。...

Global site tag (gtag.js) - Google Analytics