問題描述

如何在下拉式控制元件或 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇