html选择选项分隔符


Answers:


331

禁用的选项方法看起来最好,并且得到最好的支持。我还提供了一个使用optgroup的示例。

optgroup(这种方式有点烂):

<select>
    <optgroup>
        <option>First</option>
    </optgroup>
    <optgroup label="_________">
        <option>Second</option>
        <option>Third</option>
    </optgroup>
</select>

禁用选项(好一点):

<select>
    <option>First</option>
    <option disabled>_________</option>
    <option>Second</option>
    <option>Third</option>
</select>

如果您真的想花哨的话,请使用水平unicode框绘图字符。
(最佳选择!)

<select>
    <option>First</option>
    <option disabled>──────────</option>
    <option>Second</option>
    <option>Third</option>
</select>

http://jsfiddle.net/JFDgH/2/


21
Unicode在jsfiddle中对我非常有用,但是当我尝试将其复制/粘贴到我的代码中时,它无法正确翻译。因此,对于有此问题的用户,水平unicode框绘图字符的HTML编码为&#9472; fileformat.info/info/unicode/char/2500/index.htm,在&#9473;中还有一个更重的选项。fileformat.info/info/unicode/char/2501/index.htm
JeffG,2014年

1
在移动Firefox(以及可能的其他移动浏览器)上,该disabled选项在右侧显示为禁用的单选按钮...
GoTo 2014年

但是optgroup在PC和移动设备上的呈现方式有所不同,因此禁用选项仍然是最佳解决方案。
GoTo

1
html文件的编码对于“─”字符显示为一行而不是乱码也是至关重要的。带BOM的UFT8可能是一个不错的选择。
Andreas Jansson 2014年

1
@ db0外观不一致。grab.by/EzEigrab.by/EzEk(请参阅jsfiddle链接)。
亚历克斯K

76

尝试:

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

40
不要在optgroup上贴标签,而是尝试将其添加到样式表中:optgroup + optgroup {border-top:1px实心黑色}比起一串破折号,看起来更俗气。
劳伦斯·贡萨尔维斯

2
Optgroup标签应描述该组。如果浏览器是按照HTML 4.01规范中的屏幕截图实现的,则用户将面临破折号行,并且必须检查每个破折号以查明其背后的原因。
昆汀2009年

2
@Laurence:IE7在optgroup或option元素上不支持CSS样式。至少没有边界
格罗姆

1
<optgroup style =“ border-top:1px点缀#ccc; margin:5px 0;”> </ optgroup>-至少在Firefox中看起来很酷!
本·辛克莱

1
像这样的空optgroup不是合法的html。如果使用它,将会收到验证错误。我更喜欢james.garriss的回答。
Ariel

22

这是一个旧线程,但是由于没有人发布过类似的回复,因此我将其添加为因为它是我偏爱的分离方式。

我发现使用破折号之类的东西有点令人讨厌,因为它可能不足选择框的宽度。因此,我更喜欢使用CSS创建分隔符。

<select>
  <option style="background-color: #cccccc;" disabled selected>Select An Option</option>
  <option>First Option</option>
  <option>Second</option>
  <option style="font-size: 1pt; background-color: #000000;" disabled>&nbsp;</option>
  <option>Third</option>
  <option>Fourth</option>
  <option style="font-size: 1pt; background-color: #000000;" disabled>&nbsp;</option>
  <option>Fifth</option>
  <option>Sixth</option>
</select>


太好了!我用min-height:1px; max-height:1px; 填充:0; 而不是font-size:1pt; 1像素线
kofifus

15

如果您不想使用optgroup元素,请将破折号放到option元素中,然后将其赋予Disabled属性。它将可见,但显示为灰色。

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

嗨,詹姆斯,我也很喜欢这种解决方案,但屏幕阅读器会显示“ disable option dash dash dash dash ...”(禁用选项破折号dash dash破折号...),这对于残疾用户可能会造成很大的困扰。您是否知道如何避免这种情况?谢谢!
Julio 2013年

1
是否可以将类添加到您不想说的视觉元素中,然后添加用于隐藏/禁用该类的ARIA命令?也许像这里使用的一种技术? asurkov.blogspot.com/2012/02/...
james.garriss

其实,@ Julio,您应该将其发布为新问题。我很好奇,但我以前从未为屏幕阅读器编程过。
james.garriss

9

我不是使用普通字符,而是使用扩展字符集中的横杠符号来替换它,如果用户在另一个替换该字符但对我而言正常的国家中,它看起来不会很好。您可以使用各种不同的chacter来获得出色的效果,并且不涉及CSS。

<option value='-' disabled>――――</option>

8

在CSS中定义一个类:

option.separator {
    margin-top:8px;
    border-top:1px solid #666;
    padding:0;
}

用HTML编写:

<select ...>
    <option disabled class="separator"></option>
</select>

2
可以使用jsfiddle示例来改善答案。这似乎是最内置的解决方案,它不依赖于副作用或黑客攻击,但可以很好地比较其他答案的视觉效果。
raider33

在许多浏览器中不起作用。(像往常一样,输入是在一个痛苦的对接)
四十

5

我将@Laurence Gonsalves的评论作为答案,因为它是唯一在语义上有效并且看起来不像hack的评论。

尝试将其添加到样式表中:

optgroup + optgroup { border-top: 1px solid black } 

俗气的样子比一堆破折号要少得多。


2
这实际上是正确的方法(重要的是,它不会添加无意义的内容)。我喜欢这样设置样式(在分隔符周围添加一些额外的垂直空间):optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
Nicolas Le Thierry d'Ennequin

3

另一种方法是在选项上使用css 1x1背景图片,该图片似乎仅适用于Firefox,并且具有“ ----”后备

<option value="" disabled="disabled" class="SelectSeparator">----</option> 

.SelectSeparator
    {
      background-image:  url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==);
      color:black;
      background-repeat:repeat-x;
      background-position:50% 50%;
      background-attachment:scroll;
}

http://jsfiddle.net/yNecQ/6/

或使用javascript(jquery)进行以下操作:

-hide the select element and 
-show a div which can be completely styled and 
-reflect the div state onto the select for the form submit

http://tutorialzine.com/2010/11/better-select-jquery-css3/


另请参见 如何在html select控件中添加水平线?



1

您可以使用破折号“ —”。每个字符之间没有可见的空格。
(使用某些字体!)

在HTML中:

<option value =“ —————————————“已禁用”> ———————————— </ option>

或在XHTML中:

<option value =“ —————————————” disabled =“ disabled”> ———————————— </ option>

1
字符之间的间距由字体和渲染引擎确定。例如,我在Chrome(Windows)上看到短划线之间的空格,而在Safari(Mac)上看不到短划线。
汉克,

1

这个总是最好的。

<option>First</option>
<option disabled>_________</option>
<option>Second</option>
<option>Third</option>


1
 <option  data-divider="true" disabled>______________</option>

您也可以做到这一点。这很容易,使分频器选择下拉列表。


0

我选择有条件地改变颜色和背景。设置排序顺序,并使用vue.js进行如下操作:

<style>
    .altgroup_1 {background:gray; color:white;}
    .altgroup_2{background:white; color:black;}
</style>

<option :class = {
    'altgroup_1': (country.sort_order > 25),
    'altgroup_2': (country.sort_order > 50 }"
    value="{{ country.iso_short }}">
    {{ country.short_name }}
</option
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.