JavaScript拖動調整元素的尺寸
一些實際應用中,可以通過拖拽調整視窗的大小。
下面通過分析一個例項來簡單介紹一下如何實現此功能,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> ul,li { margin:0; padding:0; } body { font:14px/1.5 Arial; color:#666; } #box { position:relative; width:600px; height:400px; border:2px solid #000; margin:10px auto; overflow:hidden; } #box ul { list-style-position:inside; margin:10px; } #box div{ position:absolute; width:100%; } #top, #bottom { color:#FFF; height:100%; overflow:hidden; } #top { background:green; } #bottom { background:skyblue; top:50% } #line { top:50%; height:4px; overflow:hidden; margin-top:-2px; background:red; cursor:n-resize; } </style> <script type="text/javascript"> function $(id){ return document.getElementById(id) } window.onload=function(){ var oBox=$("box"),oBottom=$("bottom"),oLine=$("line"); oLine.onmousedown=function(e){ var disY=(e||event).clientY; oLine.top=oLine.offsetTop; oBox.onmousemove=function(e){ var iT=oLine.top+((e||event).clientY-disY); var maxT=oBox.clientHeight-oLine.offsetHeight; oLine.style.margin = 0; iT < 0 && (iT = 0); iT > maxT && (iT = maxT); oLine.style.top=oBottom.style.top=iT+"px"; return false } oBox.onmouseup=function(){ oBox.onmousemove=null; oBox.onmouseup=null; } return false } } </script> <center> 上下拖動紅條改變顯示區域高度 </center> <div id="box"> <div id="top"> <ul> <li>jQuery初學例項程式碼集</li> <li>100多個ExtJS應用初學例項集</li> <li>基於jQuery的省、市、縣三級級聯選單</li> <li>一個類似QQ網的JS相簿展示特效</li> <li>eWebEditor v4.60 最新通用精簡版</li> <li>FCKeditor 2.6.4.1 網頁編輯器</li> <li>jQuery平滑圖片滾動</li> <li>Xml+JS省市縣三級聯動選單</li> <li>jQuery 滑鼠滑過連結文字彈出層提示的效果</li> <li>JS可控制的圖片左右滾動特效(走馬燈) </li> </ul> </div> <div id="bottom"> <ul> <li>網頁上部大Banner廣告特效及圖片橫向滾動程式碼</li> <li>FlexSlider網頁廣告、圖片焦點圖切換外掛</li> <li>相容IE,火狐的JavaScript圖片切換</li> <li>jQuery仿ios無線區域網WIFI提示效果(摺疊皮膚)</li> <li>TopUp js圖片展示及彈出層特效程式碼</li> <li>jQuery仿Apple蘋果手機放大鏡閱讀效果</li> <li>Colortip 文字title多樣式提示外掛</li> <li>網頁換膚,Ajax網頁風格切換程式碼集</li> <li>超強大、漂亮的藍色網頁彈出層效果</li> <li>jQuery 影像預覽功能的程式碼實現 </li> </ul> </div> <div id="line"></div> </div> </body> </html>
一.實現原理:
當滑鼠按在oLine物件時,會觸發mousedown事件,這時就會執行對應事件處理函式,此處理函式,首先會將當前oLine.offsetTop(oLine物件距離父物件頂部的距離)值賦給oLine.top,以便後面程式碼使用。當上下拖動滑鼠的時候,會觸發mousemove事件,這裡要特別注意,一般的思路會將mousemove事件註冊到oLine物件,這裡卻註冊到oBox,目的是通過事件冒泡原理,將oLine物件上觸發的事件傳播到oBox,這樣可以防止滑鼠拖動oLine物件的時候,指標超出oLine物件邊界,導致失效的情況。當滑鼠移動的時候,通過iT=oLine.top+((e||event).clientY-disY)不斷計算oLine物件的offsetTop值,然後通過maxT=oBox.clientHeight-oLine.offsetHeight計算出offsetTop最大值,也就是oLine被拖動到最低端的位置,同時通過語句判斷,將拖動範圍控制在oBox物件範圍之內,最後通過oLine.style.top=oBottom.style.top=iT+"px"將不斷計算出來的offsetTop值賦值給oLine.style.top和oBottom.style.top,於是就實現了拖動效果。
二.程式碼註釋:
(1).function $(id){}用來返回具有相應id值的物件。
(2).window.onload=function(){ }當王爺內容載入完畢再去執行主體程式碼。
(3).var oBox=$("box"),var oBottom=$("bottom")和var oLine=$("line")用於獲取相應的物件。
(4).oLine.onmousedown=function(e){}為oLine物件繫結onmousedown事件處理函式。
(5).var disY=(e||event).clientY用來獲取onmousedown事件被觸發時滑鼠指標相對於瀏覽器頁面的垂直座標,並且在這裡使用了相容性寫法。
(6).oLine.top=oLine.offsetTop可以將onmousedown事件出發時oLine物件的offsetTop值賦值給oLine物件的自定義屬性top。
(7).oBox.onmousemove=function(e){ }為oBox物件的onmousemove事件繫結事件處理函式。
(8).var iT=oLine.top+((e||event).clientY-disY)可以不斷計算出滑鼠拖動時oLine物件的offsetTop屬性值。
(9).var maxT=oBox.clientHeight-oLine.offsetHeight用以計出oLine物件的最大offsetTop值,這個時候oLine被拖動到最低端。
(10).oLine.style.margin=0將oLine物件的外邊距設定為零。
(11).iT<0&&()這個可以認為是if語句的縮寫:
[JavaScript] 純文字檢視 複製程式碼if(iT<0){ iT=0 }
(12).iT>maxT&&(iT=maxT)和上面類似。
(13).oLine.style.top=oBottom.style.top=iT+"px"用來將之前獲得的oLine兌現的offsetTop屬性值設定設為oLine物件和oBottom物件的top屬性值,當然後面一定要附加"px"。
(14).return false可以避免一些預設事件的發生,影響效果。
(15).oBox.onmouseup=function(){ }為oBox繫結onmouseup事件處理函式,當滑鼠按鍵放下時清除oBox物件的onmousemove事件和onmouseup事件。
(16).rreturn false可以避免一些預設事件的發生,影響效果。
相關文章
- JavaScript 拖動調整元素尺寸JavaScript
- js拖動調整元素寬度JS
- JavaScript滑鼠拖動調整div大小JavaScript
- js通過拖動調整元素位置程式碼例項JS
- JavaScript拖動div元素詳解JavaScript
- 通過拖動實現調整元素之間位置程式碼例項
- JavaScript方向鍵調整div元素的位置JavaScript
- jQuery滑鼠拖動調整數字大小jQuery
- JavaScript 調整li元素上下順序JavaScript
- javascript div元素滑鼠拖動效果詳解JavaScript
- js實現的通過拖動調整元素間的相對位置程式碼例項JS
- jQuery拖動調整左右兩列寬度jQuery
- 批量調整視訊尺寸大小的方法,一鍵自動批量調整視訊
- kindeditor 上傳圖片 自動調整尺寸大小
- javascript中獲取元素尺寸JavaScript
- HTML元素拖動JSHTMLJS
- jQuery實現的拖動調整表格td單元格的大小jQuery
- Winform中實現拖動 Windows 邊緣來調整其大小ORMWindows
- Python 調整PDF頁面尺寸大小Python
- 有新手批量調整視訊尺寸的方法嗎?
- javascript緩衝彈性方式設定元素的尺寸JavaScript
- jQuery動態設定div元素的尺寸jQuery
- jQuery調整li元素順序jQuery
- 調整 JavaScript 抽象的迭代方案JavaScript抽象
- 調整JavaScript 抽象的迭代方案JavaScript抽象
- JavaScript有虛線框的拖動JavaScript
- CSS實現可拉伸調整尺寸的分欄佈局CSS
- JavaScript左右拖動滑動的按鈕效果JavaScript
- 譯|調整JavaScript抽象的迭代方案JavaScript抽象
- JavaScript調整option順序JavaScript
- jQuerydiv元素拖動效果程式碼例項jQuery
- JavaScript 限定範圍拖動效果JavaScript
- JavaScript獲取瀏覽器、元素、螢幕的寬高尺寸JavaScript瀏覽器
- JavaScript與CSS3動畫方式改變元素尺寸JavaScriptCSSS3動畫
- JavaScript 動畫方式設定元素尺寸和透明度JavaScript動畫
- 關於快速排序中元素調整方法的分析排序
- div拖動範圍限定在指定元素內
- JavaScript表格tr行左右拖動效果JavaScript