`
totoxian
  • 浏览: 1073980 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

用JS脚本做一个可拖动的对话框

阅读更多

JS脚本做一个可拖动的对话框

左直拳

一、 可拖动

关键是能跟踪鼠标坐标的变化,从而不断修正对话框的坐标。

假设待移动的对话框为objMove,则有

pX = event.x - objMove.style.pixelLeft;

pY = event.y - objMove.style.pixelTop;

其中pixelLeftpixelTop是对话框左边缘、顶边缘与document左边缘、顶边缘的距离,event.xevent.y是鼠标按下(未松开)的坐标值。

因此可得到鼠标抓紧点与对话框边缘的坐标差pXpY。只要在鼠标移动过程中,保持这一坐标差恒定不变,月亮走我也走,鼠标送阿框到村口,即可实现对话框的拖动:

objMove.style.left = event.x - pX;

objMove.style.top = event.y - pY;

这只是原理,还需要一些函数进行支撑。

设置三个函数:

MDown()//鼠标按下时触发,得到pX,pY的值,放在对话框的onmousedown调用

MMove()//鼠标移动时触发,拖动,document.onmousemove

MUp()//鼠标松开时触发,释放,document.onmouseup,当然放在对话框的onmouseup调用也是可以的

注意这个对话框要用绝对定位。

二、 对话框内的文本框等可正常编辑

如果对话框内有文本框、下拉框等可供用户进行编辑的控件,如果不进行特别处理,则光标在这些控件内拖动同样会引起对话框的移动,这跟我们平时使用的习惯不符,给框内的编辑带来麻烦。

怎么办呢?

如果知道鼠标抓紧时落在哪种类型的控件上就好了。

嘿,这位老板,你好运了!可以用event.srcElement来获取这个控件

var hitpoint = event.srcElement;

if( hitpoint.tagName == "INPUT"

|| hitpoint.tagName == "TEXTAREA"

|| hitpoint.tagName == "SELECT" )

{

objMove = null;//不鸟它

return;

}

三、 半透明

这个对话框还要有点透明,拖动时下面的元素若隐若现,这样才让人够兴奋,浮想联翩。

主要是CSS里实现。style="FILTER:alpha(opacity=90);position:absolute;left:60%;……

不过这好象在IE系的浏览器里才有用,对firefox这些则没效果。

附录:drag.js

var objMove = null;

var pX = 0;

var pY = 0;

document.onmouseup = MUp;

document.onmousemove = MMove;

function MDown(objMoveId)

{

var hitpoint = event.srcElement;

if( hitpoint.tagName == "INPUT"

|| hitpoint.tagName == "TEXTAREA"

|| hitpoint.tagName == "SELECT" )

{

objMove = null;

return;

}

objMove = document.getElementById(objMoveId);

if( objMove == null )

{

return;

}

objMove.style.cursor = "move";

//objMove.setCapture();

pX = event.x - objMove.style.pixelLeft;

pY = event.y - objMove.style.pixelTop;

}

function MMove()

{

if(objMove != null)

{

objMove.style.left = event.x - pX;

objMove.style.top = event.y - pY;

}

}

function MUp()

{

if(objMove != null)

{

//objMove.releaseCapture();

objMove.style.cursor = "default";

objMove = null;

}

}

分享到:
评论

相关推荐

    jQuery可拖拽对话框弹出层代码.zip

    这个“jQuery可拖拽对话框弹出层代码.zip”文件显然包含了一个实现可拖拽对话框的示例,这种功能常用于创建用户友好的交互式界面。下面我们将深入探讨相关的知识点。 首先,让我们从jQuery开始。jQuery是由John ...

    js弹出可移动对话框

    在JavaScript(简称JS)编程中,创建一个可移动的对话框是一种常见的需求,尤其是在构建交互式的Web应用时。对话框通常用于向用户显示警告、询问信息或者提供额外的交互界面。本实例将介绍如何利用JavaScript实现一...

    JS可拖动窗口控件,可实现各种DIV窗口自定义及各种DIV弹出提示框 带遮罩层的DIV窗口/对话框控件 js javascript 对话框

    总的来说,这个资源为开发者提供了一个实用的、可定制的对话框解决方案,通过使用JS和CSS,可以轻松地在网页中实现拖动、自定义和遮罩效果的对话框,提高Web应用的交互性和用户体验。开发者可以根据项目需求进行二次...

    Javascript实现div对话框效果

    通过这种方式,我们可以使用纯JavaScript实现一个基本的div对话框效果,包括显示、隐藏、黑背景以及关闭功能。如果需要更复杂的交互,如动画效果、拖动或自定义大小等,可以进一步研究CSS3动画、事件处理和更多的DOM...

    js弹出对话框 源代码

    JavaScript(简称JS)是一种轻量级的脚本语言,常用于网页交互和动态效果的实现。在网页设计中,弹出对话框是常见的用户交互方式,可以用来显示警告信息、获取用户输入或进行确认操作。本文将深入探讨如何使用JS创建...

    JavaScript仿百度弹出窗口对话框效果

    在JavaScript和jQuery的世界里,创建一个仿百度弹出窗口对话框效果是一项常见的需求,它可以用于显示消息、警告、确认信息或者进行用户交互。这个效果主要通过JavaScript动态生成HTML元素,并结合CSS来实现视觉上的...

    JQuery实战视频教程_页面加载时弹出一个对话框

    总的来说,这个jQuery实战视频教程通过实例展示了如何使用jQuery和jQuery UI创建一个在页面加载时自动弹出的对话框,这对于提升用户体验和增强网页互动性是非常实用的技能。通过学习和实践这一教程,开发者能够更好...

    js控制弹出对话框js控制弹出对话框

    JavaScript(简称JS)是一种广泛用于网页和网络应用的编程语言,尤其在客户端脚本中,它扮演着重要的角色。在网页交互中,控制弹出对话框是常见的需求,例如提示用户确认操作、输入信息或者显示警告。本文将深入探讨...

    js脚本 ----拖动层--

    压缩包中的"拖动层js+示例"很可能是包含实现拖动层功能的JavaScript代码和一个演示页面。通过查看这些文件,你可以看到实际的代码实现,并在本地环境中运行以测试效果。 总的来说,实现一个拖动层涉及到HTML、CSS...

    jQuery.dialog.js网页弹出对话框美化特效插件.zip

    jQuery库以其简洁的API和强大的功能,成为了JavaScript开发者们首选的工具,而jQuery.dialog.js则是jQuery生态中的一个强大插件,专门用于实现对话框的美化和特效。本文将深入探讨jQuery.dialog.js的使用方法、核心...

    mootools 对话框

    在MooTools的众多组件中,“MooTools Dialog”(对话框)是其中一个重要的部分,它允许开发者创建出优雅且易于使用的提示、警告或者信息窗口。 **MooTools Dialog基本概念** MooTools Dialog,也称为“模态框”或...

    MVC4下对话框中使用Uploadify上传多个文件

    3. **配置JQuery Dialog**:在页面加载完成后,使用JQuery选择器找到对话框元素并设置其属性,如宽度、高度、是否可拖动等。同时,设置打开对话框的触发事件,如按钮点击。 ```javascript $(function () { $("#...

    jQuery实现鼠标拖拽确认对话框弹出层特效源码.zip

    总的来说,这个项目展示了如何使用jQuery创建一个具有拖拽功能和确认对话框的弹出层特效。通过学习和理解这个源码,开发者可以提高自己在交互设计和前端开发方面的能力,同时也能为自己的项目增添生动有趣的用户体验...

    js脚本精华

    本压缩包文件"js脚本精华"显然是一个包含各种JavaScript代码示例、技巧或者库的集合,旨在帮助开发者提升网页的交互性和动态效果。 JavaScript的核心特性包括变量、数据类型、控制结构(如if语句和for循环)、函数...

    JavaScript模态对话框类(拖拽时动画)

    总之,创建一个带有拖拽和动画效果的JavaScript模态对话框需要理解DOM操作、事件处理、CSS样式以及动画原理。通过学习`ModelDialog-0.6.html`和`ModelDialog-0.6.js`中的代码,我们可以深入理解这些概念并应用于自己...

    jQuery的弹出警告对话框美化插件

    3:在IE7中,可以使你避免使用JavaScript 的prompt()函数带来的页面重新加载。 4:这些方法都模拟了Windows的模式对话框。在你改变改变浏览器窗口大小时候,它能够自适应用户 窗口的调整。 5:如果你引入...

    一个JQuery插件 - Javascript可拖动的模式窗口

    这个"JavaScript可拖动的模式窗口"是一个基于jQuery的插件,它允许用户通过鼠标拖动来调整模式窗口的位置,提供了更友好的用户体验。 ### jQuery基础 jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、...

    超级漂亮对话框 确认取消 登陆窗口 注册窗口 弹出式菜单

    5. **zDrag.js**:拖动功能的JavaScript文件,可能用于实现对话框可拖动的效果,增强用户体验。 6. **2ky.cn.url**:这可能是一个链接,指向更多关于这个对话框库的信息或者开发者网站。 7. **images**:目录中可能...

    MFC对话框用插件打开网页

    1. **添加WebBrowser控件到资源对话框**:在Visual Studio的资源视图中,打开对话框资源,然后从工具箱中拖动一个`WebBrowser`控件到对话框设计界面。 2. **生成WebBrowser成员变量**:在对话框类的头文件中,声明...

    可拖动弹出框插件.zip

    总结起来,"可拖动弹出框插件"是一个提升网页应用交互体验的工具,通过"easydialog.js"库,开发者可以轻松创建具有拖动功能和各种特效的弹出框,以满足不同场景的需求。在实际项目中,结合HTML、CSS和JavaScript的...

Global site tag (gtag.js) - Google Analytics