直接贴代码:
<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>
相关推荐
这可以通过`removeEventListener`方法实现,确保用户松开鼠标后,`div`不再随鼠标移动。 以下是一个简化的代码示例: ```javascript let div = document.querySelector('div'); let isDragging = false; let ...
"jquery div页面图片浮动层鼠标拖动效果代码.zip"是一个示例项目,用于展示如何利用jQuery实现一个图片浮动层,并且允许用户通过鼠标拖动来移动这个浮动层。在这个压缩包中,我们有两个文件:`使用须知.txt`和`...
4. 防止默认行为和事件冒泡:在document的mousemove事件处理函数中,返回false,这样做可以防止浏览器的默认行为和阻止事件继续冒泡,确保只有被拖动的div会随鼠标移动,避免影响到其他元素。 5. 动态计算位置:在...
这个例子展示了如何使用JavaScript的基本事件处理和DOM操作来实现一个简单的鼠标拖动效果。然而,实际应用中可能需要考虑更多的边界条件和优化,例如限制拖动范围、处理多个可拖动元素、防止元素穿透等。此外,现代...
4. **更新元素位置**:根据偏移量,更新元素的CSS `top`和`left`属性,使元素随鼠标移动。通常,我们会用到JavaScript的`style`对象来修改这些属性。 5. **边界限制**:为了防止元素拖出父容器或窗口范围,需要检查...
在本示例中,我们探讨了如何使用jQuery实现一个div元素跟随鼠标移动的效果。这个功能在许多交互式网页设计中非常常见,例如悬浮菜单、拖动元素等。关键在于理解和处理鼠标位置与div元素位置之间的关系。 首先,我们...
通过捕获鼠标事件,计算鼠标与`DIV`的位置差,然后在鼠标移动时更新`DIV`的位置,实现了拖动效果。同时,为了防止`SELECT`元素的干扰,我们可以添加一个覆盖层来屏蔽它们。这样的功能可以广泛应用于网页中的各种交互...
通过在`mousemove`事件中设置这些值,可以实现元素随鼠标移动的效果。 文中还提供了两个示例元素,分别是`#div`和`#div2`,它们都设置了`position:absolute`,这使得它们的位置可以脱离常规的文档流,并通过`left`...
vue 弹框实现移动效果是指在 vue 项目中实现弹框的移动效果,使其可以被拖动和悬浮。下面将对实现这种效果的知识点进行详细的解释。 1. 自定义指令 在 vue 中,可以使用自定义指令来实现弹框的移动效果。自定义...
`来使元素脱离文档流并随鼠标移动,以及利用`transition`或`animation`属性来实现平滑过渡。 3. JavaScript(JS)与JSP(JavaServer Pages):虽然标题中提到了JS和JSP,但通常实现鼠标跟随特效主要依赖JavaScript...
- `onmousemove`事件:根据鼠标移动的位置更新`div`的`left`和`top`属性,实现拖动效果。 - `onmouseup`事件:鼠标抬起时,移除`onmousemove`和`onmouseup`事件监听,防止继续移动。 在实际应用中,你可能需要对...
1.jquery+div随屏幕滚动特效(支持设置参数滚动) 2.jQuery字符插件之适合留言板的jquery文本框输入字符限制插件下载 3.jquery实现Tooltip提示(文字、链接、地图锚点),自带5种不同样式 4.jQuery实现支付宝隐藏...
同时,可以通过`cursor: move`改变鼠标指针,提示用户可以拖动弹窗: ```css .popup { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); /* 其他样式 */ } .popup .content { /...
当用户按下鼠标并移动时,分割线会随之移动,改变两侧内容的相对大小。这需要我们在JavaScript代码中计算鼠标的位置,并相应地更新分割线的位置。 实现这一功能的关键步骤包括: 1. 创建分割线HTML元素,并设置...
在网页设计中,为了提升用户体验,常常需要实现一些动态效果,比如图片放大并跟随鼠标移动的特效。这种特效常见于电商网站的商品展示,用户可以通过鼠标移动来预览商品的细节。本文将详细介绍如何使用JavaScript来...
通过改变CSS的`left`和`top`属性,我们可以控制页面上的元素随鼠标移动。 以下是一个具体的实现拖动效果的示例代码: ```html <!DOCTYPE html> div { width: 100px; height: 100px; background: red; ...
《jQuery UI Draggable:实现元素随鼠标移动的拖放功能》 在Web开发中,交互性和用户体验至关重要。jQuery UI库提供了一系列丰富的组件,使得开发者能够轻松实现复杂的用户界面功能,其中`Draggable`就是用于创建可...
4. **更新位置**:根据偏移量,更新DIV元素的CSS `left`和`top`属性,使得其位置随鼠标移动。 5. **AJAX交互**:当用户释放鼠标(`mouseup`事件)时,可以使用AJAX将新的DIV位置发送到服务器,保存或更新状态。这...
在本示例中,我们将深入探讨如何利用jQuery实现网页上的层(通常指的是div元素)的拖动功能。这对于创建交互式用户界面,如可移动的对话框或自定义布局,是非常有用的。 首先,我们需要理解jQuery的基本概念。...