Browsed by
分類:jQuery

[Bootstrap] Modal 自動設定最大高度

[Bootstrap] Modal 自動設定最大高度

Bootstrap有個modal懸浮窗
如果裡面內容過多,bootstrap並不會把內容限縮在modal-body裡
為了美觀,所以需要CSS的「max-height」屬性套用至modal-body上
如此一來內容過長造成溢出時,modal-body會顯示捲動欄
同時modal-header與modal-footer的內容亦會固定在視窗上
網站上可能會用到多個modal,一個一個設定的話要自己去抓數字,很麻煩
所幸bootstrap modal有shown.bs.modal這個event可以使用
所以寫了一段全部modal都適用的code

 

關於多扣10px的部分,因為有其他誤差值,造成body的捲動欄會出現
個人猜想可能是因為其他部分box-model的關係導致(border-width等blahblah)
不過我也抓不到就是了QQ,所以就偷懶多扣10px混過去XD
至於為什麼會用「shown.bs.modal」這個event,而不是「show.bs.modal」
是因為modal顯示前的的css height是0
「show.bs.modal」觸發的時機是顯示前,而「shown.bs.modal」則是顯示後
因此要等modal顯示時,偵測到的css height才是正確的
而這裡又有一個小小的缺點
就是當你使用fade-in & fade-out效果時
在動畫結束前,body的捲動欄會出現
直到動畫結束後觸發了shown.bs.modal event
才會顯示成正常的樣子
小弟才疏學淺,這個問題還不知道要怎麼解決
或許加快css animation speed做為障眼法混過去勉強可行
不過因為這種情況只會在該modal第一次顯示時才會出現
之後只要browser inner height沒有變,都不會出現
所以就將就一下囉~
順帶一提,如果你想要能限制最大高度,又能固定佔滿版,只要將第六行的「max-height」改成「height」即可。如下所示

 

Update:
2017-05-10: 利用 || 0 預防取回高度值為 nan 的情況下出錯。

[jQuery] 重設HTML select box

[jQuery] 重設HTML select box

舊式做法是將selectedIndex設為0
自jQuery 1.6開始支援使用.prop()這支API來操作selectedIndex
 

HTML

 

jQuery

 

[jQuery] textarea自動調整高度

[jQuery] textarea自動調整高度

[jQuery] 轉換與使用json object

[jQuery] 轉換與使用json object