2012/11/9 16:04:14作者:佚名來源:網(wǎng)絡
【實例名稱】
JS設(shè)計滑動條效果(二)
【實例描述】
為了增加頁面的美觀性,可使用滑動條來顯示百分比,而且還可以拖曳滑動條改變百分比的大小。本例學習如何實現(xiàn)這種功能的滑動條。
【實例代碼】
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>滑塊條-學無憂(denvermotorcycleaccidentlawyer.com)</title> <style type="text/css"> #trackBar { background-color:#666666; }#trackBar_slider { border:1px solid #808080; background-color:#FFFFFF; }#trackBar1 { background-color:blue; }#trackBar1_slider { border:1px solid #808080; background-color:#FFFFFF; } </style> </head> <body> <div id="info"></div> <div id="trackBar1"> </div> <script type="text/javascript" language="javascript"> //對象未創(chuàng)建完成之前,不能在函數(shù)之中用this function setTrackBar(trackBar, min, max, barPos) //指定的div,最小值,最大值和位置 { this.trackBar = trackBar; //承載滑動條的對象 this.sliderIdStr = trackBar + "_slider"; //滑動條 this.trackBarId = document.getElementById(this.trackBar); //獲取div this.sliderId = null; //未創(chuàng)建滑動條對象 this.min = (min>=0)?min:0;//最小值不能小于0 this.max = (max>=min)?max:min;//最大值必須大于最小值 this.barPos = (barPos>=min && barPos<=max)?barPos:min; //位置必須在最大和最小之間
this.orientation = "h"; //設(shè)置對象和滑動條的位置 this.trackBarWidth = 100; this.trackBarHeight = 10 this.sliderWidth = 10; this.sliderHeight = 10; this.Create = Create; this.draging = false; this.offset = 0;
this.BeforeDrag = BeforeDrag;//綁定滑動事件 this.OnDrag = OnDrag; this.EndDrag = EndDrag; } function Create(trackBar1)//創(chuàng)建滑動條的方法 { this.trackBarId.innerHTML = "<div id=\"" + this.sliderIdStr + "\"" + " onmousedown=\"javascript:BeforeDrag(" + trackBar1 + "); \"" + " style=\"position:relative;cursor:n-resize;\"></div>"; this.sliderId = document.getElementById(this.sliderIdStr); this.sliderId.style.pixelTop = this.trackBarHeight - ((this.trackBarHeight-this.sliderHeight)*this.barPos)/ (this.max-this.min) - this.sliderHeight; this.trackBarId.style.width = this.trackBarWidth; //設(shè)置滑動條的初始位置 this.trackBarId.style.height = this.trackBarHeight; this.sliderId.style.width = this.sliderWidth; this.sliderId.style.height = this.sliderHeight;
return true; }var curTrackBar = null;//準備拖拽 function BeforeDrag(trackBar) { if (event.button != 1) //如果不是鼠標左鍵,則返回 { return; } document.body.style.cursor = "n-resize"; //鼠標的樣式 curTrackBar = trackBar; curTrackBar.draging = true; curTrackBar.offset = curTrackBar.trackBarId.style.pixelTop + curTrackBar.sliderId.style.pixelTop+curTrackBar.sliderId.offsetHeight- event.clientY; } function OnDrag() //實現(xiàn)拖拽的方法 { if(!curTrackBar || !curTrackBar.draging) { return; } event.returnValue = false; var phyPos = 0; if (curTrackBar.orientation !== "h") { phyPos = curTrackBar.trackBarId.style.pixelTop + curTrackBar.trackBarId.offsetHeight - event.clientY - curTrackBar.offset; if (phyPos <= 0) { phyPos = 0; //如果拖動到最底端 } else if(phyPos >= (curTrackBar.trackBarId.offsetHeight- curTrackBar.sliderId.offsetHeight)) { phyPos = curTrackBar.trackBarId.offsetHeight - curTrackBar.sliderId.offsetHeight; } //改變滑動條的位置 curTrackBar.sliderId.style.pixelTop = curTrackBar.trackBarId.offsetHeight - phyPos - curTrackBar.sliderId.offsetHeight; curTrackBar.barPos = parseInt(((curTrackBar.max-curTrackBar.min)* phyPos/(curTrackBar.trackBarId.offsetHeight-curTrackBar.sliderId.offsetHeight))); }OnTrackBarTxt(); } function EndDrag()//結(jié)束拖拽 { if (!curTrackBar) { return; } document.body.style.cursor = "default"; curTrackBar.draging = false; }function OnTrackBarTxt() //拖拽時,改變滑動條的值 { document.getElementById("info").innerHTML = curTrackBar.barPos+ " / " + curTrackBar.max; }document.onmousemove = OnDrag; //鼠標移動時,實現(xiàn)拖拽-開始滑動 document.onmouseup = EndDrag; //鼠標離開時,結(jié)束拖拽-即結(jié)束滑動 var trackBarObj1 = new setTrackBar("trackBar1", 0, 100,100); //配置滑動條,指定最小值和最大值 trackBarObj1.orientation = "v";//滑動條的方法-垂直 trackBarObj1.trackBarWidth = 15;//對象的寬度 trackBarObj1.trackBarHeight = 100;//對象的高度 trackBarObj1.sliderWidth = 15;//滑動條的寬度 trackBarObj1.sliderHeight = 10; //滑動條的高度 trackBarObj1.Create("trackBarObj1");//創(chuàng)建滑動條 </script> </body> </html>
【運行效果】
【難點剖析】
本例提供了關(guān)于滑動條的5個常用方法。“setTrackBar”方法用來設(shè)置滾動條的最小值、最大值和位置等?!癈reate”方法用來創(chuàng)建滑動條的承載器和滑動條本身?!癇eforeDrag”方法主要判斷用戶的操作是否為“拖曳”?!癘nDrag”方法表示拖曳過程中滑動條的改變?!癊ndDrag'’方法用來實現(xiàn)拖曳完成后的一些狀態(tài)恢復。這些方法可以直接移植到其他項目中使用。
【源碼下載】
為了JS代碼的準確性,請點擊:JS設(shè)計滑動條效果(二) 進行本實例源碼下載
標簽: 滑動條 進度條
相關(guān)文章
Adobe indesign cs6中文版
詳情金山數(shù)據(jù)恢復大師官方版 v1.0.0.2
詳情南方測繪Cass10v10.1.6中文
詳情revit 2017
詳情KeyShot Pro 9中文(附安裝教程) v9.0.286
詳情網(wǎng)易新聞客戶端v105.3
詳情AIMP4v5.11.2421中文綠色美化版
詳情onekey一鍵還原v18.0.18.1008
詳情浩辰CAD2020綠色v20.0
詳情好圖網(wǎng)圖標轉(zhuǎn)換工具v4.9.7
詳情aardiov35.0.0中文最新版
詳情Adobe Creative Cloud 2024簡體中文v5.3.0.48
詳情暴風影音16 v9.04.1029去廣告精簡版
詳情ASP.NET Maker 2019(ASP.NET代碼生成工具)v12.0.4.0
詳情暴風影音v5.92.0824.1111
詳情迅雷5穩(wěn)定版v5.8.14.706
詳情使命召喚17官方中文版 v1.0
詳情死亡之雨新的僵尸病毒中文v1.0綠色免安裝版
詳情輻射4v1.7.15.0整合版
詳情克莉2v1.0中文版
詳情冬日計劃v1.2中文版
詳情刺客信條英靈殿v1.0吾愛
詳情刺客信條英靈殿終極v1.0免安裝
詳情動物森友會v1.10.0最新
詳情哈迪斯殺出地獄v1.37中文
詳情嗜血印中文豪華版v1.0豪華版 附游戲攻略秘籍
詳情城市戰(zhàn)斗v1.0中文
詳情尼爾人工生命v1.0steam免費
詳情尼爾人工生命升級版v1.0PC
詳情層層恐懼2中文v1.0綠色免安裝版
詳情往日不再v1.0 steam
詳情往日不再v1.0pc
詳情小生活游戲內(nèi)置MOD版v2.0(57)安卓版
詳情使命召喚手游測試服最新版v1.9.41安卓版
詳情三國謀定天下官服v1.2.1安卓版
詳情熱血新手村高爆版v1.0.0安卓版
詳情我養(yǎng)你啊手機版v1.0.0安卓版
詳情看懂了就很恐怖的故事(細思極恐)中文版v1.0安卓版
詳情背包英雄中文手機版v1.1.1安卓版
詳情glow官方版v2.0.9安卓版
詳情三國大時代4霸王立志官方正版v1.9安卓版
詳情飛盧小說閱讀器手機版v7.0.7安卓版
詳情牛牛粵語詞典軟件v20.4.4安卓版
詳情PrettyUp視頻美化瘦身軟件v2.3.0
詳情化學方程式app中文版v1.1.0.20安卓版
詳情地下城堡3魂之詩2024安卓最新版v1.2.3安卓版
詳情南方都市報v6.10.0安卓版
詳情阿修羅之眼正版v1.0.10安卓版
詳情