如何改變 select 元素的高度


mozilla 對於美化 select 元素的樣式有這樣一段描述(用 CSS 美化 Select 元素):

眾所周知,select 元素很難用 CSS 進行高效的設計。你可以影響任何元素的某些方面 - 例如,操縱框模型,顯示的字體等,你可以使用 appearance 屬性來刪除默認的系統外觀。
但是,這些屬性不會在瀏覽器之間產生一致的結果,並且很難在列中將不同類型的表單元素相互排列。 select 元素的內部結構復雜,難以控制。 如果你想獲得完全控制,你應該考慮使用一個具有良好設施的庫來構建窗體小部件(例如jQuery UI),或者嘗試使用非語義元素,JavaScript 和 WAI-ARIA 滾動自己的下拉菜單來提供語義。

Firefox 瀏覽器 select 原樣式如下,當 option 超出 20 個元素時,展示 20 個元素,產生豎向滾動條:
Firefox 瀏覽器 select 原樣式

不過 select 元素提供了 size 屬性,來控制控件中顯示的行數 —— option 元素的個數

size屬性

如果控件顯示為滾動列表框,則此屬性表示為控件中同時可見的行數。瀏覽器不需要將選擇元素呈現為滾動列表框。默認值為0

  1. 方法一:用 size 屬性來設置 option 元素顯示的個數

  • 當 option 的個數超出 5 個時,設置 select 的 size 為 6;
  • 當失去焦點時,設置 select 的 size 為默認值 0;
  • 當改變選擇后,設置 select 的 size 為默認值 0。

改變后的樣式如下:
Firefox 瀏覽器 select 高度改變

使用 size 屬性改變 select 元素的高度 codepen 在線示例

  1. 方法二: 使用其他元素替代 select 元素,模擬 select 選擇

  • 增加 input 元素提供選擇域,以及顯示選擇的值;
  • 用 ul li 替代 select option 選擇;
  • 當選擇了某一 li,或者點擊了空白區域,ul 隱藏;
  • 當點擊了 input 后,ul 顯示或隱藏。

改變后的樣式如下:
使用其他元素替代 select 元素,模擬 select 選擇
使用其他元素替代 select 元素,模擬 select 選擇 codepen 在線示例(js 中需引入 jquery 庫,效果才會生效)

<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM