問題描述

如何在下拉式控件或 HTML 中的選擇控件中添加水平線 (<hr> 標籤)?

最佳解決方案

一般來説,這不是<select> 的一項功能,大多數瀏覽器對該控件的樣式控制非常差。在 Firefox 中,您可以執行以下操作 (儘管在其他瀏覽器中不起作用):

<select name="test">
    <option val="a">A</option>
    <option val="b" class="select-hr">B</option>
    <option val="c">C</option>
    <option val="d">D</option>
</select>

與 CSS:

option.select-hr { border-bottom: 1px dotted #000; }

但是一般來説,唯一的辦法是用破折號來選擇一個選項,並嘗試使其不可選。

<select name="test">
    <option val="a">A</option>
    <option val="b">B</option>
    <option disabled="disabled">----</option>
    <option val="c">C</option>
    <option val="d">D</option>
</select>

參見:http://jsfiddle.net/qM5BA/283/

次佳解決方案

我以前遇到這個問題,唯一的 cross-browser 方式來實現這一點是使用 unicode 框繪製水平字符。瀏覽器不會在這些字符之間呈現空格。當然這也意味着你的頁面必須接受 unicode(utf-8),幾乎是這幾天給出的。

這是一個演示,這個使用 「light horizontal」 框標記:

<option value="" disabled="disabled">─────────────────────────</option>

可以使用各種 unicode 框字符選項作為分隔符,它們之間不應有空格:

“─”,”━”,”┄”,”┅”,”┈”,”┉”

更多關於 unicode 框繪圖字符在這裏:http://www.duxburysystems.com/documentation/dbt11.2/miscellaneous/Special_Characters/Unicode_25xx.htm

您還可以使用 HTML 轉義字符來包含它們 (複製和粘貼通常可以通過插入框字符’UTF-8 序列,哪些瀏覽器似乎尊重,但是這不是一個選項),這對於一行中的四個輕水平框標記:

& 安培;#X2500;& 安培;#X2500;& 安培;#X2500;& 安培;#X2500;

它呈現為

────

第三種解決方案

select 元素可能只包含 optgroupoption 元素,option 元素只能包含文本。標記如<hr> 是禁止的。

我會使用這樣一個元素創建一個分隔符:

<option disabled role=separator>

你可以考慮這樣的標記:

<optgroup label="-------"></optgroup>

然而,不同瀏覽器之間的渲染變化有點太多了,不能接受。

第四種方案

你可以使用”—” 。每個角色之間沒有可見的空格。在 HTML 中:

<option value disabled>—————————————</option>

或在 XHTML 中

<option value="" disabled="disabled">—————————————</option>

第五種方案

<option>----------</option>

要麼

<option>__________</option>

但是你不能寫<option><hr /></option>

您還可以使用背景圖像將 css 類添加到空的<option>

<option class="divider"> </option>

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇