利用div+jquery自定義滾動條樣式的2種方法

最近做項目中有一個模塊是用於實時監控的,左邊有個菜單欄用於顯示所有的設備,那當然是從數據庫中動態獲取的瞭,右邊是個iframe用於顯示監控畫面。本來這個功能並不復雜,左邊的菜單項是利用dtree.js來實現的,可時當功能實現完成之後,卻發現一個問題,就是左邊菜單欄中的設備名有的會很長,會超出瞭p的長度,準確說是左邊iframe的寬度和長度不夠。那麼,這時就必須要利用滾動條瞭,可以設置左邊菜單項p的overflow-x:auto;overlfow-y:auto;這樣就會自動生成瞭滾動條,但是大傢都知道自帶的不好看。接下來就是重點瞭,如何修改滾動條的樣式呢?

經過從網上的不斷搜索,發現有兩種方法:

第一種方法:利用CSS提供的樣式,一共是8種屬性吧,在這裡不做詳細介紹,網上很多這方面的資料。

第二種方法:自己寫一個新的滾動條,即不用p自帶的滾動條。這樣想要什麼樣的效果就有什麼樣的效果。具體實現,在網上搜瞭很多,可以發現基本上隻有豎向滾動條,而沒有橫向滾動條,無奈之下,自己利用jquery寫另一個滾動條,當然也借鑒瞭隻有豎向滾動條的程序。

說一下具體實現思路:目標p 即需要生成滾動條的p,裡面嵌套瞭3個p,分別是用於顯示內容的p_content,顯示豎向滾動條的p_H,顯示橫向滾動條的p_W,具體佈局就是按照自帶滾動條的p的佈局一樣,然後顯示滾動條的p即p_H和p_W有各自包含瞭3個p,即左右箭頭2個,滾動條1個。具體代碼如下:

. 代碼如下:

if($(_self).children(".jscroll-c").height()==null){
//添加內容框(p)
$(_self).wrapInner("<p class='jscroll-c' style='top:0px;z-index:9999;zoom:1;position:relative;'></p>");
//添加豎向滾動條
$(_self).append("<p class='jscroll-e' unselectable='on' style='height:97.5%;top:0px;right:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><p class='jscroll-u' style='position:absolute;top:0px;width:100%;right:0;background:blue;overflow:hidden'></p><p class='jscroll-h' unselectable='on' style='background:green;position:absolute;left:0;-moz-user-select:none;border:1px solid'></p><p class='jscroll-d' style='position:absolute;bottom:0px;width:100%;left:0;background:blue;overflow:hidden'></p></p>");
//添加橫向滾動條
$(_self).append("<p class='jscroll-s' unselectable='on' style='width:180px;bottom:0px;left:0;-moz-user-select:none;position:absolute;overflow:hidden;z-index:10000;'><p class='jscroll-l' style='position:absolute;bottom:0px;height:100%;left:0;background:blue;overflow:hidden'></p><p class='jscroll-g' unselectable='on' style='height:100%;background:green;position:absolute;left:0;-moz-user-select:none;border:1px solid'></p><p class='jscroll-r' style='position:absolute;bottom:0px;height:100%;right:0;background:blue;overflow:hidden'></p></p>");
}

然後無非就是一些判斷,p的內容是否超過瞭p的范圍,監聽事件的添加。具體代碼可見我的下載資源;

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *