這篇文章主要介紹了javascript實現鼠標拖動改變層大小的方法,涉及javascript操作鼠標事件及樣式的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了javascript實現鼠標拖動改變層大小的方法。分享給大家供大家參考。具體實現方法如下:
- <html>
- <head>
- <title>拖動改變層的大小</title>
- <meta content="text/html; charset=gb2312" http-equiv="Content-Type">
- <style> {
- box-sizing: border-box; moz-box-sizing: border-box
- }
- #testDiv { background-color: buttonface; background-repeat: repeat;
- background-attachment: scroll; color: #3969A5; height: 300px;
- left: 30px; overflow: hidden; width: 500; z-index: 2;
- border: 2px outset white; margin: 0px; padding: 2px;
- background-position: 0% 50% }
- body { font-family: Verdana; font-size: 9pt }
- #innerNice { background-color: white; background-repeat: repeat;
- background-attachment:
- scroll; color: #3969A5; height: 100%; overflow: auto;
- width: 100%; border: 2px inset white; padding: 8px;
- background-position: 0% 50% }
- </style>
- <SCRIPT language=javascript>
- var theobject = null;
- function resizeObject() {
- this.el = null; //pointer to the object
- this.dir = ""; //type of current resize (n,s,e,w,ne,nw,se,sw)
- this.grabx = null; //Some useful values
- this.graby = null;
- this.width = null;
- this.height = null;
- this.left = null;
- this.top = null;
- }
- function getDirection(el) {
- var xPos, yPos, offset, dir;
- dir = "";
- xPos = window.event.offsetX;
- yPos = window.event.offsetY;
- offset = 8; //The distance from the edge in pixels
- if (yPos<offset) dir += "n";
- else if (yPos > el.offsetHeight-offset) dir += "s";
- if (xPos<offset) dir += "w";
- else if (xPos > el.offsetWidth-offset) dir += "e";
- return dir;
- }
- function doDown() {
- var el = getReal(event.srcElement, "className", "resizeMe");
- if (el == null) {
- theobject = null;
- return;
- }
- dir = getDirection(el);
- if (dir == "") return;
- theobject = new resizeObject();
- theobject.el = el;
- theobject.dir = dir;
- theobject.grabx = window.event.clientX;
- theobject.graby = window.event.clientY;
- theobject.width = el.offsetWidth;
- theobject.height = el.offsetHeight;
- theobject.left = el.offsetLeft;
- theobject.top = el.offsetTop;
- window.event.returnValue = false;
- window.event.cancelBubble = true;
- }
- function doUp() {
- if (theobject != null) {
- theobject = null;
- }
- }
- function doMove() {
- var el, xPos, yPos, str, xMin, yMin;
- xMin = 8; //The smallest width possible
- yMin = 8; // height
- el = getReal(event.srcElement, "className", "resizeMe");
- if (el.className == "resizeMe") {
- str = getDirection(el);
- //Fix the cursor
- if (str == "") str = "default";
- else str += "-resize";
- el.style.cursor = str;
- }
- //Dragging starts here
- if(theobject != null) {
- if (dir.indexOf("e") != -1)
- theobject.el.style.width = Math.max(xMin, theobject.width + window.event.clientX - theobject.grabx) + "px";
- if (dir.indexOf("s") != -1)
- theobject.el.style.height = Math.max(yMin, theobject.height + window.event.clientY - theobject.graby) + "px";
- if (dir.indexOf("w") != -1) {
- theobject.el.style.left = Math.min(theobject.left + window.event.clientX - theobject.grabx, theobject.left + theobject.width - xMin) + "px";
- theobject.el.style.width = Math.max(xMin, theobject.width - window.event.clientX + theobject.grabx) + "px";
- }
- if (dir.indexOf("n") != -1) {
- theobject.el.style.top = Math.min(theobject.top + window.event.clientY - theobject.graby, theobject.top + theobject.height - yMin) + "px";
- theobject.el.style.height = Math.max(yMin, theobject.height - window.event.clientY + theobject.graby) + "px";
- }
- window.event.returnValue = false;
- window.event.cancelBubble = true;
- }
- }
- function getReal(el, type, value) {
- temp = el;
- while ((temp != null) && (temp.tagName != "BODY")) {
- if (eval("temp." + type) == value) {
- el = temp;
- return el;
- }
- temp = temp.parentElement;
- }
- return el;
- }
- document.onmousedown = doDown;
- document.onmouseup = doUp;
- document.onmousemove = doMove;
- </SCRIPT>
- </head>
- <body>
- <div class="resizeMe" id="testDiv">
- <div id="innerNice">
- <p align="center"> </p>
- <p align="center">
- 請在邊框處拖動鼠標</p>
- <p> </p>
- <p> </p>
- <p> </p>
- </div>
- </div>
- </body>
- </html>
希望本文所述對大家的javascript程序設計有所幫助。
新聞熱點
疑難解答
圖片精選