基于JavaScript的网页元素拖拽功能的实现

合集下载

JavaScript实现图片的放大缩小及拖拽功能示例

JavaScript实现图片的放大缩小及拖拽功能示例

JavaScript实现图⽚的放⼤缩⼩及拖拽功能⽰例本⽂实例讲述了JavaScript实现图⽚的放⼤缩⼩及拖拽功能。

分享给⼤家供⼤家参考,具体如下:实现效果如下:实现代码:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><style>div{width:400px;height:400px;overflow:hidden;position:relative;border:1px solid #000;}div img{position:absolute;height:100%;width:auto;cursor:move;}</style></head><body><div id="div" onmousewheel="return bbimg(this)"><img id="img" border="0" src="img/zs.jpg" /></div><script language="javascript">var params = {zoomVal:1,left: 0,top: 0,currentX: 0,currentY: 0,flag: false};//图⽚缩放function bbimg(o){var o=o.getElementsByTagName("img")[0];params.zoomVal+=event.wheelDelta/1200;if (params.zoomVal >= 0.2) {o.style.transform="scale("+params.zoomVal+")";} else {params.zoomVal=0.2;o.style.transform="scale("+params.zoomVal+")";return false;}}//获取相关CSS属性var getCss = function(o,key){return o.currentStyle? o.currentStyle[key] : document.defaultView.getComputedStyle(o,false)[key];};//拖拽的实现var startDrag = function(bar, target, callback){if(getCss(target, "left") !== "auto"){params.left = getCss(target, "left");}if(getCss(target, "top") !== "auto"){params.top = getCss(target, "top");}//o是移动对象bar.onmousedown = function(event){params.flag = true;if(!event){event = window.event;//防⽌IE⽂字选中bar.onselectstart = function(){return false;}}var e = event;params.currentX = e.clientX;params.currentY = e.clientY;};document.onmouseup = function(){params.flag = false;if(getCss(target, "left") !== "auto"){params.left = getCss(target, "left");}if(getCss(target, "top") !== "auto"){params.top = getCss(target, "top");}};document.onmousemove = function(event){var e = event ? event: window.event;if(params.flag){var nowX = e.clientX, nowY = e.clientY;var disX = nowX - params.currentX, disY = nowY - params.currentY;target.style.left = parseInt(params.left) + disX+ "px";target.style.top = parseInt(params.top) + disY+ "px";if (typeof callback == "function") {callback((parseInt(params.left) || 0) + disX, (parseInt(params.top) || 0) + disY);}if (event.preventDefault) {event.preventDefault();}return false;}}};startDrag(document.getElementById("img"),document.getElementById("img"))</script></body></html>更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家JavaScript程序设计有所帮助。

前端开发中的元素拖拽实现技术

前端开发中的元素拖拽实现技术

前端开发中的元素拖拽实现技术随着互联网的蓬勃发展,前端开发在网页设计和实现中起着至关重要的作用。

其中,元素拖拽实现技术在用户交互体验方面扮演着重要的角色。

本文将探讨前端开发中的元素拖拽实现技术,并深入探讨其工作原理和应用场景。

一、什么是元素拖拽实现技术元素拖拽实现技术是指通过前端代码逻辑和用户交互,实现在网页中拖动元素的功能。

通过鼠标或触摸屏拖拽元素,既可以改变元素的位置,也可以实现元素之间的交互和数据传递。

这种技术主要应用于网页设计、图形编辑器、拖放购物车等功能中。

二、基于原生JavaScript实现元素拖拽在前端开发中,可以使用原生JavaScript来实现元素的拖拽功能。

通过获取拖拽元素的位置和鼠标的坐标,结合鼠标事件和DOM操作方法,可以实现元素在页面中的拖拽效果。

例如,通过监听拖拽元素的mousedown、mousemove和mouseup 事件,可以控制元素随着鼠标的移动而改变位置,从而实现元素的拖拽。

三、借助第三方库实现元素拖拽为了提高开发效率和代码可维护性,前端开发者可以借助一些开源的第三方库来实现元素拖拽。

在市面上有许多成熟和强大的拖拽库,如jQuery UI、Sortable.js 等。

这些库提供了丰富的API和预定义的样式,使得开发者可以通过简单的引入和配置,即可实现复杂的拖拽功能。

使用第三方库可以减少开发者的工作量,同时也增加了代码的可维护性和可扩展性。

四、HTML5拖放APIHTML5提供了内置的拖放API,使得元素拖拽的实现更加简单和直观。

通过使用HTML5拖放API中的draggable和droppable属性,可以轻松地将元素设置为可拖拽或可放置的目标。

拖动元素时,浏览器会自动处理拖放相关的事件,开发者只需要编写相应的逻辑代码即可。

HTML5拖放API的出现,进一步促进了元素拖拽技术在前端开发中的普及和应用。

五、元素拖拽的应用场景元素拖拽技术在前端开发中有广泛的应用场景。

原生js实现拖拽效果

原生js实现拖拽效果

原⽣js实现拖拽效果
css样式布局:
html部分:
js主体部分:
接下来⽤混合继承实现box2移动时有边界的效果:
思路:1.实现拖拽效果主要有三个事件,当⿏标按下的时候,获取⿏标相对于事件发⽣元素的位置(offsetX/offsetY);当⿏标移动的时候,利⽤⿏标指针相对于浏览器页⾯(或客户区)的坐标(clientX/clientY),得到元素的left和top值(clientX/clientY-offsetX/offsetY);当⿏标抬起的时候清除移动效果。

2.事件处理函数会使this指向触发事件的元素,使⽤bind改变this的指向(指向实例),会返回⼀个新函数,提前将移动和抬起事件的this改变保存在⼀个变量中,让移除的和调⽤的是同⼀个函数。

3.⼀个box有边界,⼀个box没有边界,就需要⼦元素继承⽗元素,然后修改⼦元素的move事件,这⾥⽤的是混合继承的⽅法,使⽤改变this 指向的⽅法继承构造函数中的内容,使⽤原型继承来继承原型对象的内容。

4.边界值设定:不⼩于0;不⼤于可视宽度与元素本⾝宽度的差值。

document.documentElement.clientWidth 为可视区域的宽度。

拖拽设计器原理

拖拽设计器原理

拖拽设计器原理拖拽设计器的原理主要是通过编程实现元素的拖拽功能。

在Web开发中,通常使用JavaScript、HTML和CSS等技术实现这一功能。

在实现拖拽功能时,一般会使用到HTML5的Drag and Drop API。

这个API提供了拖拽事件(dragstart、drag、dragend等)和拖拽数据(DataTransfer对象)的处理方法,使得开发者可以自定义拖拽的行为和效果。

具体来说,拖拽设计器的原理可以分为以下几个步骤:1. 定义可拖拽的元素:在HTML中,通过设置元素的draggable属性为true,即可让元素具有可拖拽的特性。

2. 监听拖拽事件:使用JavaScript来监听元素的拖拽事件,例如dragstart、drag和dragend等事件。

在这些事件的处理函数中,可以编写逻辑来处理拖拽的行为和效果。

3. 实现拖拽效果:通过CSS样式和JavaScript的DOM操作,可以改变被拖拽元素的位置和样式,从而实现拖拽效果。

4. 处理拖拽数据:当元素被拖拽时,可以使用DataTransfer对象的getData方法来获取被拖拽的数据。

这个数据可以是文本、文件、URL等类型,开发者可以根据需要自定义数据的类型和格式。

5. 实现放置目标:当元素被拖拽并放置到目标位置时,需要处理放置事件。

在放置事件的处理函数中,可以编写逻辑来处理放置的行为和效果,例如接收被拖拽的数据或者触发其他事件等。

总的来说,拖拽设计器的原理是通过编程实现元素的拖拽功能,并通过监听事件和处理数据来实现拖拽的行为和效果。

这种原理可以应用于各种Web 应用中,例如文件管理器、网页编辑器、在线办公等场景。

JavaScript实现动态网页特效

JavaScript实现动态网页特效

JavaScript实现动态网页特效JavaScript是一种常用的编程语言,可以用于实现动态网页特效。

通过JavaScript,开发者可以为网页添加各种交互效果,使用户体验更加丰富和吸引人。

以下是一些常见的JavaScript动态网页特效的实现方法:1. 鼠标悬停效果:通过JavaScript可以实现当鼠标悬停在某个区域上时,改变该区域的样式或显示隐藏的内容。

例如,当用户将鼠标悬停在一个按钮上时,可以让按钮的颜色变化或显示按钮下方的一段描述文字。

2. 幻灯片效果:通过JavaScript可以实现网页上的幻灯片效果,使多张图片自动轮播展示。

可以通过设置定时器和改变图片的显示状态来实现。

这种效果常用于图片展示、轮播广告等地方。

3. 下拉菜单效果:通过JavaScript可以实现网页上的下拉菜单效果,让用户点击或悬停在一个导航栏上时,下方显示出更多的选项。

可以通过设置事件监听和改变菜单的可见性来实现。

4. 表单验证效果:通过JavaScript可以实现网页上的表单验证效果,检查用户输入的内容是否符合要求。

可以通过设置事件监听和编写验证函数来实现。

例如,当用户提交表单时,可以检查是否所有的必填项都已填写,并给出相应的提示。

5. 动态加载内容效果:通过JavaScript可以实现动态加载内容的效果,当用户滚动网页到一定位置时,自动加载更多的内容。

可以通过监听滚动事件和设置ajax 请求来实现。

这种效果常用于博客、社交媒体等网站上。

6. 特效动画效果:通过JavaScript可以实现各种特效动画,如淡入淡出效果、滑动效果、旋转效果等。

可以通过改变元素的显示状态、设置定时器和改变元素的样式来实现。

这种效果常用于网页中的广告、特效展示等地方。

7. 音频视频播放效果:通过JavaScript可以实现网页上的音频和视频播放效果。

可以通过设置事件监听、控制播放状态和改变样式来实现。

例如,当用户点击一个按钮时,可以播放音频或视频,并显示相应的控制按钮。

js中的draggable方法

js中的draggable方法

(原创实用版3篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的3篇《js中的draggable方法》,供大家借鉴与参考。

下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(3篇)《js中的draggable方法》篇1在JavaScript中,`draggable`方法通常用于创建可拖动的元素。

这个方法通常用于HTML5的拖放API。

以下是一个基本的例子:```javascript// 获取要拖动的元素var element = document.getElementById("draggable-element");// 添加拖动处理程序element.draggable = true;```上述代码会设置元素的draggable属性为true,这会使该元素可以被拖动。

注意,要实现拖动效果,通常还需要为元素添加适当的CSS样式。

以下是一个完整的例子,展示如何使用JavaScript和HTML5的拖放API实现拖动:HTML部分:```htmlu003cdiv id="draggable-element" style="width: 100px; height: 100px; background: red;"u003eu003c/divu003e```JavaScript部分:```javascript// 获取要拖动的元素var element = document.getElementById("draggable-element");// 添加拖动处理程序element.draggable = true;```请注意,以上代码只是一种实现方式,实际的实现可能因库、框架、或者具体的需求而有所不同。

dragulajs用法

dragulajs用法

`Dragula` 是一个基于JavaScript 的库,它提供了非常简单的API 来创建拖放组件。

`Dragula` 库使得在网页上实现拖放功能变得非常容易,无需编写大量的代码。

以下是`Dragula` 库的基本用法:1. 首先,你需要在HTML 文件中引入`Dragula` 的CSS 样式和你打算使用的JavaScript 文件。

```html<link rel="stylesheet" href="path-to-dragula/dragula.min.css"><script src="path-to-dragula/dragula.min.js"></script>```2. 在你的JavaScript 中,你需要初始化`Dragula` 实例,并给它一个包含拖放项的容器。

```javascriptconst drake = Dragula([document.querySelector('#my-container')]);```在上面的代码中,`#my-container` 是包含拖放项的容器的ID。

3. 你可以添加一些事件监听器来响应拖放事件,例如:```javascriptdrake.on('drag', function(el, source) {console.log('Element ' + el.tagName + ' is being dragged');});drake.on('drop', function(el, target, source, sibling) {console.log('Element ' + el.tagName + ' was dropped');});```4. 如果你想自定义拖放的行为,你可以使用`setOptions` 方法来设置各种选项:```javascriptdrake.setOptions({revertOnSpill: true,removeOnSpill: true});```这些选项可以控制当拖放项溢出容器时是否自动恢复或移除元素。

JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)

JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)

JS实现漂亮的窗⼝拖拽效果(可改变⼤⼩、最⼤化、最⼩化、关闭)本⽂实例讲述了JS实现漂亮的窗⼝拖拽效果。

分享给⼤家供⼤家参考。

具体如下:这是⼀款漂亮的JS窗⼝拖拽效果(改变⼤⼩/最⼩化/最⼤化/还原/关闭)特点:①窗⼝可以拖动;②窗⼝可以通过⼋个⽅向改变⼤⼩;③窗⼝可以最⼩化、最⼤化、还原、关闭;④限制窗⼝最⼩宽度/⾼度。

运⾏效果截图如下:在线演⽰地址如下:具体代码如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>窗⼝拖拽(改变⼤⼩/最⼩化/最⼤化/还原/关闭)</title><style type="text/css">body,div,h2{margin:0;padding:0;}body{background:url(images/bg.jpg);font:12px/1.5 \5fae\8f6f\96c5\9ed1;color:#333;}#drag{position:absolute;top:100px;left:100px;width:300px;height:160px;background:#e9e9e9;border:1px solid #444;border-radius:5px;box-shadow:0 1px 3px 2px #666;}#drag .title{position:relative;height:27px;margin:5px;}#drag .title h2{font-size:14px;height:27px;line-height:24px;border-bottom:1px solid #A1B4B0;}#drag .title div{position:absolute;height:19px;top:2px;right:0;}#drag .title a,a.open{float:left;width:21px;height:19px;display:block;margin-left:5px;background:url(images/tool.png) no-repeat;}a.open{position:absolute;top:10px;left:50%;margin-left:-10px;background-position:0 0;}a.open:hover{background-position:0 -29px;}#drag .title a.min{background-position:-29px 0;}#drag .title a.min:hover{background-position:-29px -29px;}#drag .title a.max{background-position:-60px 0;}#drag .title a.max:hover{background-position:-60px -29px;}#drag .title a.revert{background-position:-149px 0;display:none;}#drag .title a.revert:hover{background-position:-149px -29px;}#drag .title a.close{background-position:-89px 0;}#drag .title a.close:hover{background-position:-89px -29px;}#drag .content{overflow:auto;margin:0 5px;}#drag .resizeBR{position:absolute;width:14px;height:14px;right:0;bottom:0;overflow:hidden;cursor:nw-resize;background:url(images/resize.png) no-repeat;}#drag .resizeL,#drag .resizeT,#drag .resizeR,#drag .resizeB,#drag .resizeLT,#drag .resizeTR,#drag .resizeLB{position:absolute;background:#000;overflow:hidden;opacity:0;filter:alpha(opacity=0);} #drag .resizeL,#drag .resizeR{top:0;width:5px;height:100%;cursor:w-resize;}#drag .resizeR{right:0;}#drag .resizeT,#drag .resizeB{width:100%;height:5px;cursor:n-resize;}#drag .resizeT{top:0;}#drag .resizeB{bottom:0;}#drag .resizeLT,#drag .resizeTR,#drag .resizeLB{width:8px;height:8px;background:#FF0;}#drag .resizeLT{top:0;left:0;cursor:nw-resize;}#drag .resizeTR{top:0;right:0;cursor:ne-resize;}#drag .resizeLB{left:0;bottom:0;cursor:ne-resize;}</style><script type="text/javascript">/*-------------------------- +获取id, class, tagName+-------------------------- */var get = {byId: function(id) {return typeof id === "string" ? document.getElementById(id) : id},byClass: function(sClass, oParent) {var aClass = [];var reClass = new RegExp("(^| )" + sClass + "( |$)");var aElem = this.byTagName("*", oParent);for (var i = 0; i < aElem.length; i++) reClass.test(aElem[i].className) && aClass.push(aElem[i]);return aClass},byTagName: function(elem, obj) {return (obj || document).getElementsByTagName(elem)}};var dragMinWidth = 250;var dragMinHeight = 124;/*-------------------------- +拖拽函数+-------------------------- */function drag(oDrag, handle){var disX = dixY = 0;var oMin = get.byClass("min", oDrag)[0];var oMax = get.byClass("max", oDrag)[0];var oRevert = get.byClass("revert", oDrag)[0];var oClose = get.byClass("close", oDrag)[0];handle = handle || oDrag;handle.style.cursor = "move";handle.onmousedown = function (event){var event = event || window.event;disX = event.clientX - oDrag.offsetLeft;disY = event.clientY - oDrag.offsetTop;document.onmousemove = function (event){var event = event || window.event;var iL = event.clientX - disX;var iT = event.clientY - disY;var maxL = document.documentElement.clientWidth - oDrag.offsetWidth;var maxT = document.documentElement.clientHeight - oDrag.offsetHeight;iL <= 0 && (iL = 0);iT <= 0 && (iT = 0);iL >= maxL && (iL = maxL);iT >= maxT && (iT = maxT);oDrag.style.left = iL + "px";oDrag.style.top = iT + "px";return false};document.onmouseup = function (){document.onmousemove = null;document.onmouseup = null;this.releaseCapture && this.releaseCapture()};this.setCapture && this.setCapture();return false};//最⼤化按钮oMax.onclick = function (){oDrag.style.top = oDrag.style.left = 0;oDrag.style.width = document.documentElement.clientWidth - 2 + "px";oDrag.style.height = document.documentElement.clientHeight - 2 + "px";this.style.display = "none";oRevert.style.display = "block";};//还原按钮oRevert.onclick = function (){oDrag.style.width = dragMinWidth + "px";oDrag.style.height = dragMinHeight + "px";oDrag.style.left = (document.documentElement.clientWidth - oDrag.offsetWidth) / 2 + "px";oDrag.style.top = (document.documentElement.clientHeight - oDrag.offsetHeight) / 2 + "px";this.style.display = "none";oMax.style.display = "block";};//最⼩化按钮oMin.onclick = oClose.onclick = function (){oDrag.style.display = "none";var oA = document.createElement("a");oA.className = "open";oA.href = "javascript:;";oA.title = "还原";document.body.appendChild(oA);oA.onclick = function (){oDrag.style.display = "block";document.body.removeChild(this);this.onclick = null;};};//阻⽌冒泡oMin.onmousedown = oMax.onmousedown = oClose.onmousedown = function (event){this.onfocus = function () {this.blur()};(event || window.event).cancelBubble = true};}/*-------------------------- +改变⼤⼩函数+-------------------------- */function resize(oParent, handle, isLeft, isTop, lockX, lockY){handle.onmousedown = function (event){var event = event || window.event;var disX = event.clientX - handle.offsetLeft;var disY = event.clientY - handle.offsetTop;var iParentTop = oParent.offsetTop;var iParentLeft = oParent.offsetLeft;var iParentWidth = oParent.offsetWidth;var iParentHeight = oParent.offsetHeight;document.onmousemove = function (event){var event = event || window.event;var iL = event.clientX - disX;var iT = event.clientY - disY;var maxW = document.documentElement.clientWidth - oParent.offsetLeft - 2;var maxH = document.documentElement.clientHeight - oParent.offsetTop - 2; var iW = isLeft ? iParentWidth - iL : handle.offsetWidth + iL; var iH = isTop ? iParentHeight - iT : handle.offsetHeight + iT;isLeft && (oParent.style.left = iParentLeft + iL + "px");isTop && (oParent.style.top = iParentTop + iT + "px");iW < dragMinWidth && (iW = dragMinWidth);iW > maxW && (iW = maxW);lockX || (oParent.style.width = iW + "px");iH < dragMinHeight && (iH = dragMinHeight);iH > maxH && (iH = maxH);lockY || (oParent.style.height = iH + "px");if((isLeft && iW == dragMinWidth) || (isTop && iH == dragMinHeight)) document.onmousemove = null; return false;};document.onmouseup = function (){document.onmousemove = null;document.onmouseup = null;};return false;}};window.onload = window.onresize = function (){var oDrag = document.getElementById("drag");var oTitle = get.byClass("title", oDrag)[0];var oL = get.byClass("resizeL", oDrag)[0];var oT = get.byClass("resizeT", oDrag)[0];var oR = get.byClass("resizeR", oDrag)[0];var oB = get.byClass("resizeB", oDrag)[0];var oLT = get.byClass("resizeLT", oDrag)[0];var oTR = get.byClass("resizeTR", oDrag)[0];var oBR = get.byClass("resizeBR", oDrag)[0];var oLB = get.byClass("resizeLB", oDrag)[0];drag(oDrag, oTitle);//四⾓resize(oDrag, oLT, true, true, false, false);resize(oDrag, oTR, false, true, false, false);resize(oDrag, oBR, false, false, false, false);resize(oDrag, oLB, true, false, false, false);//四边resize(oDrag, oL, true, false, false, true);resize(oDrag, oT, false, true, true, false);resize(oDrag, oR, false, false, false, true);resize(oDrag, oB, false, false, true, false);oDrag.style.left = (document.documentElement.clientWidth - oDrag.offsetWidth) / 2 + "px";oDrag.style.top = (document.documentElement.clientHeight - oDrag.offsetHeight) / 2 + "px";}</script></head><body><div id="drag"><div class="title"><h2>这是⼀个可以拖动的窗⼝</h2><div><a class="min" href="javascript:;" title="最⼩化"></a><a class="max" href="javascript:;" title="最⼤化"></a><a class="revert" href="javascript:;" title="还原"></a><a class="close" href="javascript:;" title="关闭"></a></div></div><div class="resizeL"></div><div class="resizeT"></div><div class="resizeR"></div><div class="resizeB"></div><div class="resizeLT"></div><div class="resizeTR"></div><div class="resizeBR"></div><div class="resizeLB"></div><div class="content">①窗⼝可以拖动;<br />②窗⼝可以通过⼋个⽅向改变⼤⼩;<br />③窗⼝可以最⼩化、最⼤化、还原、关闭;<br />④限制窗⼝最⼩宽度/⾼度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

及 这 些 对 象 之 间 的 关 系 。D O M 基 本 操 作 的例 子 是 函 数 d o c u — 素允许拖拽的区间限制在 网页可视区 。网页 元素 的绝对定位时
拖拽功 能涉 及到其他 的操作 , 如获取 可视化 区域 高度 , 宽度等
可参考_ l J 。
可视 区的上边距的最小距离为 0 ,最大距离为 网页可视区 的高
( 吉首大学张家界 学院 湖南 张家界 4 2 7 0 0 0 )
【 摘 要】 拖拽功能是 网页 设 计用户体验非 常重要的功能。 因此 , 掌握拖拽 功能的实现原理 , 提 高用户体验质 量。 本文
以J a v a S c i f p t 为编程语 言, 详 细 介 绍 了 实现 拖 拽 功 能 的基 础 知 识 、 实现 原 理 , 以及 相 应 的优 化 措 施 , 为 应 用拖 拽 功 能 提 供
度度与 网页元素高度之差 。 4拖拽功能的实现 实现 网页元素的拖拽功 能包 含两个步骤 : 首先以 D I V作为 网页元素; 其次 , 根据基础知识实现 鼠标事件响应函数。代码片
段 1 表 示 网页 元素 的 HT M L结 构 。
< d i v c l a s s = ” u i - d i a l o g ”i d = ” d i a l o g ” > < / d i v >
d o w n , f u n c t i o n ( e ) {
v a t e e l l w i n d w. e v e n t ;
m o u s e O f s e t X :e . p a g e X —g ( ' d i a l o g ' ) . o f s e t L e l f ; m o u s e O f f s e t Y =e . p a g e Y=g ( ' d i l a o g ' ) . o f s e t T o p ;
纵 坐 标 为 。而 与 的距 离 , 表 示 网 页元 素 的偏 移 距 离 。 具体如 图 1
所示:
代码 片段 2利用 J a v a S e i f p t 实 现 鼠标 事件 的相应 函数 , 完
成拖拽功能。
d o c u m e n t . g e t E l e me n t B y l d( d i a l o g ' ) . a d d E v e n t L i s t e n e r ( mo u s e —
1相 关 的 基础 知识
在拖拽之前 , 网页元 素与网页可视区具有一 定的左边距和
上边距 。 在 此 不 妨 设 左边 距 为, 上 边距 为 ; 当 鼠标 移 动 后 , 鼠标 改
变 的距离 , 即为 网页元素移动距 离。因此 , 移动后 网页元素与 网 页可视区的左 边距 为; 网页元素与 网页可视区 的上边距为。 松开 鼠标后 , 将拖拽标记为否 。不再重新计算距离 。 3拖拽功能的优化 在 实 现 网页 元 素 拖 拽 功 能 过 程 中 , 存 在 以下 需 要 优 化 的 问
响应事件 即当用户通 过键盘或者 鼠标 改变 网页 元素 的状 态 时, 程序给予 的反馈。在拖拽功能中, 涉及到 的事件包含 鼠标 点击 、 鼠标移动、 释放 鼠标 。以鼠标按下事件 为例 , 具体 的响应 函数为 o n m o u s e d o w n , 其他的响应函数 具体可参考阁 。 2拖拽功能的实现原理 拖拽过 程涉 及到三 个操 作 : 按下 鼠标 、 移 动 鼠标 、 松 开 鼠 标 。具体来说 , 当用 户按下 鼠标的时候, 记录 当时鼠标 的位 置 , 不妨设为 , 其中, 横坐标为 , 纵坐标 为, 开始执行拖拽功 能; 移动 鼠标后 , 鼠标会重新得到一个 新位置 , 不妨 设为, 其中横坐标为 ,
题: 限 制拖 拽 区 间 。 3 . 1限制 拖 拽 区 间
在 网页元素 的拖拽功能实现过程 中, 涉及到关键 的知识 有 两个方面 : 第一, 网页元素的相关操作 , 即D O M。第二 , 事件 的 响应函数 。 所谓 D O M 是表 示和处理一个 H T ML的常用方法 , 它 定义 了表示和修改文档所需的对象 、 这些对 象的行为和属性 以
: 一 一
D O I : 1 0 . 1 6 7 0 7  ̄ . e n k i . f j p c . 2 0 1 7 . 0 2 . 0 6 7

UJl AN CO M PU下gR
基于 J a v a S c r i p t 的 网页 元 素 拖 拽 功 能 的 实现
戚利 娜
验, 如允许用 户对 网页 元素 调整 网页 位置 , 以满 足用户 的个性 化需求 。此类功能称为拖拽功能 。拖拽功能的应用范围较为广 泛, 如在 T a b选项 卡, 可通过拖拽 功能将选 项按用户 的喜爱程 度排序 。总之 , 在 目前 的网页设计中, 拖拽功能在用户体验方面 是非常重要 的功能 。而 J a v a S c i f p t 是实现网页前端动态效果 的 常 用脚 本 。因此 , 本文 将利用 J a v a S c r i p t , 从拖拽 的基本 原理 入 手, 实现拖拽功 能。
m e n t . g e t E l e me n t B y I d ( i d ) , 该 函数通过 I D标 识 符 获 取 网 页 元 素 。
在拖拽 网页元素过程 中, 没有考虑到 网页元 素可能会被拖 拽 出网页可视 区, 从而影响用户的体验 。因此有必要 对网页元 距离 网页可视区左边 的最小距离为 0 ,最大距离为网页可视区 的宽度与网页元素 宽度之差 。网页 元素 的绝对定位时距离 网页
借鉴 。
【 关键词 ] J a v a S c r i p t ;  ̄
0引 言
i f e
网页元素的定位采 取绝对 定位方式 , 所 谓绝对 定位 , 在 上 述 案 例 中 , 即 网 页 元 素 以 网 页 可 视 区 的 左 上 角 为 原 点进 行 定
位。
目前 网 页 设 计 不 仅 要 求 网 页 结 构 合 理 , 更 重 视 用 户 的 体
相关文档
最新文档