html选择选项分隔符

Phi*_*enn 188 html

如何在select标签中创建分隔符?

New Window
New Tab
-----------
Save Page
------------
Exit
Run Code Online (Sandbox Code Playgroud)

Ale*_*x K 299

禁用选项方法似乎看起来最好,并且是最好的支持.我还提供了使用optgroup的示例.

optgroup(这种方式有点糟糕):

<select>
    <optgroup>
        <option>First</option>
    </optgroup>
    <optgroup label="_________">
        <option>Second</option>
        <option>Third</option>
    </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)

禁用选项(好一点):

<select>
    <option>First</option>
    <option disabled>_________</option>
    <option>Second</option>
    <option>Third</option>
</select>
Run Code Online (Sandbox Code Playgroud)

如果你想要真正的幻想,使用水平unicode框绘图字符.它很性感!
(最佳选择!)

<select>
    <option>First</option>
    <option disabled>??????????</option>
    <option>Second</option>
    <option>Third</option>
</select>
Run Code Online (Sandbox Code Playgroud)

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

  • Unicode在jsfiddle中对我有用,但当我尝试将其复制/粘贴到我的代码中时,它没有正确翻译.因此,对于那些有问题的人来说,水平unicode框绘制字符的HTML编码是&#9472; http://www.fileformat.info/info/unicode/char/2500/index.htm在&#9473;还有一个更重的选项.http://www.fileformat.info/info/unicode/char/2501/index.htm (21认同)
  • 在移动 Firefox(可能还有其他移动浏览器)上,“禁用”选项显示在右侧,并带有禁用的单选按钮... (2认同)
  • 为什么 optgroup 解决方案很糟糕?它在语义上看起来更合适,并且似乎不存在兼容性问题。 (2认同)

Tin*_*oji 75

尝试:

<optgroup label="----------"></optgroup>
Run Code Online (Sandbox Code Playgroud)

  • 不要在optgroups上添加标签,而是尝试将其添加到样式表中:optgroup + optgroup {border-top:1px solid black}看起来比一堆短划线要少得多. (39认同)
  • Optgroup标签应描述该组.如果浏览器按照HTML 4.01规范中的屏幕截图实现,那么用户将遇到破折号行,并且必须检查每个浏览器以找出它背后的内容. (2认同)
  • @Laurence:IE7不支持optgroup或option元素上的css样式.至少没有边界 (2认同)
  • &lt;optgroup style="border-top: 1px dotted #ccc; margin: 5px 0;"&gt;&lt;/optgroup&gt; -- 至少在 Firefox 中看起来很酷! (2认同)
  • 像这样的空 optgroup 不是合法的 html。如果您使用它,您将收到验证错误。我更喜欢 james.garriss 的回答。 (2认同)

Dex*_*ake 21

这是一个旧线程,但由于没有人发布类似的响应,我会添加它,因为这是我的首选分离方式.

我发现使用破折号这样有点像眼睛因为它可能达不到选择框的宽度.所以,我更喜欢使用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>
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,这在safari中不起作用:( (2认同)

jam*_*iss 14

如果您不想使用optgroup元素,请将破折号放在选项元素中,并为其指定disabled属性.它会是可见的,但是会变灰.

<option disabled>----------</option>
Run Code Online (Sandbox Code Playgroud)

  • 嗨詹姆斯,我也喜欢这个解决方案,但屏幕阅读器会读到“禁用选项破折号破折号…”这可能会让残疾用户感到非常困惑…您知道我们如何避免这种情况吗?谢谢你! (3认同)

小智 8

我使用扩展字符集中的水平条符号代替常规的hyphon,如果用户在另一个国家替换该字符但对我来说工作正常,则它看起来不太好.有一系列不同的字符可以用于一些很棒的效果,并且没有涉及到CSS.

<option value='-' disabled>????</option>
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以使用<hr>创建一个真正的分隔符:

<select>
    <option>Option 1-A</option>
    <option>Option 1-B</option>
    <hr>
    <option>Option 2-A</option>
    <option>Option 2-B</option>
    <option>Option 2-C</option>
    <hr>
    <option>Option 3-A</option>
</select>
Run Code Online (Sandbox Code Playgroud)

有关浏览器兼容性,请参阅https://developer.mozilla.org/en-US/docs/Web/HTML/Element/hr#browser_compatibility<select>中的行。


小智 8

在CSS中定义一个类:

option.separator {
    margin-top:8px;
    border-top:1px solid #666;
    padding:0;
}
Run Code Online (Sandbox Code Playgroud)

用HTML写的:

<select ...>
    <option disabled class="separator"></option>
</select>
Run Code Online (Sandbox Code Playgroud)

  • 使用jsfiddle示例可以改进答案.这似乎是最内置的解决方案,不依赖于副作用或黑客,但比较其他答案的视觉效果会很好. (2认同)

小智 8

以 Jasneet 的答案为基础:

  • 将禁用选项的背景设置为灰色 (Jasneet)
  • 在上方和下方添加禁用选项以填充分隔符

基本上,使用三个禁用选项来制作一个自然风格的分隔符。我选择了一条非常细的 0.1px 灰线和 0.25em 的焊盘高度,因为我认为这种组合看起来最自然:

HTML 选择列表中的分隔符

<select>
  <option :value="item1">Item 1</option>
  <option disabled style="font-size: 0.25em;"></option>
  <option disabled style="background: #c9c9c9; font-size: 0.1px;"></option>
  <option disabled style="font-size: 0.25em;"></option>
  <option :value="item2">Item 2</option>
</select>
Run Code Online (Sandbox Code Playgroud)


Nou*_*non 6

我正在将@Laurence Gonsalves 的评论变成一个答案,因为它是唯一一个在语义上有效并且看起来不像黑客的评论。

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

optgroup + optgroup { border-top: 1px solid black } 
Run Code Online (Sandbox Code Playgroud)

看起来不像一堆破折号那么俗气。

  • 这实际上是正确的做法(重要的是,它不会添加无意义的内容)。我喜欢这样设置样式(在分隔符周围添加一些额外的垂直空间):`optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; 边框顶部:实心 1px #666; }` (3认同)