在瀏覽器使用原生的 <select> ,不同瀏覽器有不同的樣式,而且 <option> 如果內容過多的話會佔版面。

01-各版本問題

在每個瀏覽器都會針對 <select>,有不同的樣式出現,而在 <option> 內容過多的話通常就是直接重頭到尾通到底,而且如果視窗不是全銀幕的話,也會看到穿過視窗列出每一筆的 <option>,另外像 Firefox 在大尺寸的銀幕解析度下字也是很小,在觀看上除了不美觀外使用上也不方便。

safari
給 bootstrap - select 自訂樣式與下拉框設置高度-safari

firefox / 此外 Firefox 居然還可以往上跑,這不知道算不算是很合理的設計,在點下的位置自行分辨上下,只要低於
給 bootstrap - select 自訂樣式與下拉框設置高度-firefox

chrome
給 bootstrap - select 自訂樣式與下拉框設置高度-chrome

IE 11
給 bootstrap - select 自訂樣式與下拉框設置高度-ie11


02-屬性修改與設定解說

See the Pen 給 bootstrap – select 自訂樣式與下拉框設置高度 by Jimmy_Wu (@Jimmy_Wu) on CodePen.light

主要針對 .myselect 做設定的中心,使用 position: absolute; 定位的話,會受到 Bootstrap 的 .col-sm-6badding 左右15px 影響,而在在上一層多套 div 以不受到影響。

.myselect:after, .myselect::after 可以已用背景圖片的方式處理,找個小萬箭頭一樣也可以使用。

HTML 內的 onmousedown="if(this.options.length>6){this.size=3}" onblur="this.size=0" onchange="this.size=0" 是設定展開的高度, this.options.length>6 指的是超過六筆資料後因為 this.size=3 縮成三行,而其他的事件就設為 0 就可以了。


03-修改後的問題

完成修改後發現 IE 10 不支援這類寫法,相關版本的微軟瀏覽器都不吃相關的樣式,真有你的千古大坑 IE。
給 bootstrap - select 自訂樣式與下拉框設置高度-ie10
給 bootstrap - select 自訂樣式與下拉框設置高度-ie10-2

認為 Edge 會好一點嗎,並沒有因為這是獨大的微軟呀…
給 bootstrap - select 自訂樣式與下拉框設置高度-Edge


資料來源:

修改Select元件的箭頭樣式