javascript拖動條可以幫助我們實現對某一值的選擇或者調整,比如音量調節、亮度調節,下面我們就來看一下如何實現這個功能。
首先,我們需要準備好拖動條的UI,代碼如下:
<div id="slide-bar"> <div id="progress-bar"></div> <div id="thumb"></div> </div>
這里我們設置一個slide-bar容器用于包裹進度條和拖動塊thumb,進度條使用progress-bar,拖動塊使用thumb。
接下來,我們需要為拖動塊thumb創建事件,允許我們通過鼠標拖動thumb來調整進度條的進度,代碼如下:
var slideBar = document.getElementById("slide-bar"); var progressBar = document.getElementById("progress-bar"); var thumb = document.getElementById("thumb"); thumb.onmousedown = function(e){ //代碼... }
在鼠標按下時,我們需要獲取鼠標的位置,用于計算移動距離。鼠標移動時,我們需要將thumb移動到對應位置,并且修改進度條的長度,用于顯示當前進度,代碼如下:
var offsetL = slideBar.offsetLeft; var thumbWidth = thumb.offsetWidth; var barWidth = slideBar.offsetWidth - thumbWidth; thumb.onmousedown = function(e){ var event = e || window.event; var startX = event.clientX; var disX = startX - thumb.offsetLeft; document.onmousemove = function(e){ //計算拖動距離并設置thumb和progress-bar的樣式 } }
拖動thumb的距離可以通過鼠標的開始位置和結束位置進行計算,并且進行邊界處理,保證thumb不會跑出進度條范圍。修改進度條的長度只需將progress-bar的樣式(width)進行修改即可。
最后,我們需要清除事件監聽,代碼如下:
thumb.onmousedown = function(e){ var event = e || window.event; var startX = event.clientX; var disX = startX - thumb.offsetLeft; document.onmousemove = function(e){ //代碼... } document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; } }
這樣我們就完成了javascript拖動條的實現,它可以很好的幫助我們實現多種場景下的數據調整,比如音量、亮度、字體大小等。
上一篇css中 對的作用