本文实例讲述了jQuery实现的鼠标拖动画矩形框。分享给大家供大家参考,具体如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh"> <head> <title>鼠标拖动画矩形</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <style type="text/css"> body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td {margin: 0;padding: 0} html {color: #000;overflow-y: scoll;overflow: -moz-scrollbars-vertical} #confirmingAppraisal { position: relative; left: 0; top: 0; margin: 0 auto; padding: 0; width: 800px; min-height: 800px; overflow: auto; height: 1000px; background-color: #e9e9e9; } .dashed-box {position: absolute;z-index: 9997; border: 1px dashed red; width: 0px; height: 0px;left: 0px; top: 0px; overflow: hidden;} #moving_box {background-color: #0A90DB;} .question-box { position: absolute; z-index: 9998; /*background: red;*/ /* older safari/Chrome browsers */ -webkit-opacity: 0.8; /* Netscape and Older than Firefox 0.9 */ -moz-opacity: 0.8; /* Safari 1.x (pre WebKit!) 老式khtml内核的Safari浏览器*/ -khtml-opacity: 0.8; /* IE9 + etc...modern browsers */ opacity: .8; /* IE 4-9 */ filter: alpha(opacity=80); /*This works in IE 8 & 9 too*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; /*IE4-IE9*/ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); } .question-border {z-index: 9999;border: 2px dashed red;overflow: hidden; } .del-box { width: 17px; height: 17px; float: right; position: relative; margin-top: 1px; margin-right: 1px; z-index: 99999999999; background: url(del.png); } </style> <script language="javascript"> window.onload = function() { function stopDefault(e) { if(e && e.preventDefault) e.preventDefault(); else window.event.returnValue = false; return false; } function oBox() { var wId = "w"; var index = 0; var target = null; var startX = 0, startY = 0; var flag = false; var startL = 0, startT = 0, boxHeight = 0, boxWidth = 0; var boxObj = document.getElementById("confirmingAppraisal"); var frame = $("#confirmingAppraisal"); var referenceSize = { "pos": frame.offset(), "width": frame.outerWidth(), "height": frame.outerHeight() } var newMarkPos = { "left": startL,////按下时鼠标距离的左边的距离 "top": startT////按下时鼠标距离的上边的距离 } //鼠标点击 boxObj.onmousedown = function(e) { flag = true; var e = window.event || e; target = e.target || e.srcElement; //获取document 对象的引用 //e.pageY,e.pageX兼容 if(target.src) { stopDefault(e) } var scrollTop = boxObj.scrollTop; var scrollLeft = boxObj.scrollLeft; var ePageX = e.clientX + scrollLeft; var ePageY = e.clientY + scrollTop; //按下时鼠标距离页面的距离 startX = ePageX; startY = ePageY; //按下时鼠标距离的左边和上边的距离 startL = startX - referenceSize.pos.left; startT = startY - referenceSize.pos.top; index++; // 如果鼠标在 box 上被按下 if(target.className.match(/del-box/i)) { // 允许拖动 flag = false; // 设置当前 box 的 id 为 moving_box var movingBox = document.getElementById("moving_box") if(movingBox !== null) { movingBox.removeAttribute("id"); } target.id = "moving_box"; removeBox(target); } else { var div = document.createElement("div"); div.id = wId + index; div.className = "dashed-box"; boxObj.appendChild(div); div = null; } } //鼠标离开 boxObj.onmouseup = function(e) { var e = window.event || e; if(boxWidth >= 1 || boxHeight >= 1) { boxObj.removeChild(dragBox(wId + index)); index++; var div = document.createElement("div"); var spanObj = document.createElement("span"); spanObj.className = 'del-box'; div.appendChild(spanObj); div.className = "question-box question-border"; div.style.left = newMarkPos.left + "px"; div.style.top = newMarkPos.top + "px"; div.style.width = boxWidth + "px"; div.style.height = boxHeight + "px"; boxObj.appendChild(div); div = null; boxWidth = 0; boxHeight = 0; } else { if(flag) { boxObj.removeChild(dragBox(wId + index)); } } flag = false; } //鼠标移动 boxObj.onmousemove = function(e) { var e = window.event || e; stopDefault(e) if(flag) { var scrollTop = boxObj.scrollTop; var scrollLeft = boxObj.scrollLeft; var ePX = e.clientX + scrollLeft; var ePY = e.clientY + scrollTop; var disW = ePX - startX; var disH = ePY - startY; var L = startL + disW; var T = startT + disH; if(disW > 0) { if(L >= 0) { boxWidth = disW } newMarkPos.left = startL; } else { if(L <= 0) { L = 0; boxWidth = startL; } boxWidth = (startL - L); newMarkPos.left = L; } if(disH > 0) { if(T >= 0) { boxHeight = disH } newMarkPos.top = startT; } else { if(T <= 0) { T = 0; boxHeight = startT; } boxHeight = (startT - T) newMarkPos.top = T; } dragBox(wId + index).style.left = newMarkPos.left + "px"; dragBox(wId + index).style.top = newMarkPos.top + "px"; dragBox(wId + index).style.width = Math.abs(boxWidth) + "px"; dragBox(wId + index).style.height = Math.abs(boxHeight) + "px"; stopDefault(e) } } var dragBox = function(id) { return document.getElementById(id); } }; oBox(); function removeBox(obj) { if(obj) { var confirmingAppraisal = document.getElementById('confirmingAppraisal'); if(obj.className == 'del-box') { var objId = document.getElementById(obj.id); confirmingAppraisal.removeChild(objId.parentNode); } else { alert(123) } } }; } </script> </head> <body style="overflow: hidden"> <div class="confirming-appraisal"> <div id="confirmingAppraisal"> <img src="1.jpg" style="position: absolute;width: 1000px;height: 1600px;"> </div> </div> </body> </html>
感兴趣的朋友可以使用如下工具测试上述代码运行效果:
在线HTML/CSS/JavaScript代码运行工具:
http://tools.jb51.net/code/HtmlJsRun
在线HTML/CSS/JavaScript前端代码调试运行工具:
http://tools.jb51.net/code/WebCodeRun
更多关于jQuery相关内容还可查看本站专题:《jQuery动画与特效用法总结》、《jQuery切换特效与技巧总结》、《jQuery扩展技巧总结》、《jQuery常用插件及用法总结》、《jQuery拖拽特效与技巧总结》、《jQuery表格(table)操作技巧汇总》、《jQuery常见经典特效汇总》及《jquery选择器用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
本文向大家介绍AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】,包括了AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS实现的鼠标拖动画矩形框。分享给大家供大家参考,具体如下: 感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/cod
本文向大家介绍Swing中依据鼠标拖拽来画出矩形的实现方法,包括了Swing中依据鼠标拖拽来画出矩形的实现方法的使用技巧和注意事项,需要的朋友参考一下 画了好久,草要么就是画了,没插掉原先线条,要么就是画第二个的时候第一个也被擦掉,但其实只要调用repaint方法就好了… 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍javascript实现淡蓝色的鼠标拖动选择框实例,包括了javascript实现淡蓝色的鼠标拖动选择框实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现淡蓝色的鼠标拖动选择框。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。
本文向大家介绍jQuery实现鼠标拖动图片功能,包括了jQuery实现鼠标拖动图片功能的使用技巧和注意事项,需要的朋友参考一下 本例利用jQuery实现一个鼠标托动图片的功能。 首先设一个wrapper,wrapper内的坐标即图片移动的坐标 设置图片div,这个div即要拖动的div 上面设置了wrapper的定位为relative,div1的定位为absolute。 接下来设计拖动的算法: 思
本文向大家介绍jQuery实现鼠标可拖动调整表格列宽度,包括了jQuery实现鼠标可拖动调整表格列宽度的使用技巧和注意事项,需要的朋友参考一下 实现鼠标可拖动调整表格列宽度 如图: 一、引入文件: 二、TABLE 以上html只是作为Demo 并不是我项目中所实际使用的,并且在测试的时候 也未能实现。郁闷... 三、实现表格可拖动 在项目使用过程中 发现无需引入store.js <th>也无需
本文向大家介绍javascript实现简单的鼠标拖动效果实例,包括了javascript实现简单的鼠标拖动效果实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现简单的鼠标拖动效果。分享给大家供大家参考。具体分析如下: 用鼠标拖动一个元素,放到网页的任意一个位置上,这是很常见的,例如很多博客模板版块位置可以自己拖动到相应位置。 下面先写一个简单的可以实现鼠标拖动的效