我该如何在HTML的下拉控件或选择控件中添加水平线(<hr>
标记)?
我该如何在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>
selectedIndex
进行任何操作时可能会出现问题。 - Varun NatraajselectedIndex
- 但是在计算、移动该索引时,您需要考虑到具有.disabled
的元素。 - Orblingoptgroup
可以避免 selectedIndex
的问题,并自动禁用。 - Chris - Jroptgroup
的支持不像现在这样普遍。 - Orbling我之前也遇到过这个问题,唯一跨浏览器实现方式是使用Unicode框线水平字符。浏览器不会在这些字符之间呈现空格。当然,这也意味着你的网页必须接受Unicode(UTF-8),现在几乎是一个默认值。
这里有一个演示,它使用"轻型水平"框线标记:
<option value="" disabled="disabled">─────────────────────────</option>
您可以使用各种Unicode框字符选项作为分隔符,它们应该在它们之间没有空格的情况下呈现:
"─","━","┄","┅","┈","┉"
有关Unicode框绘制字符的更多信息,请参见此处:http://www.duxburysystems.com/documentation/dbt11.2/miscellaneous/Special_Characters/Unicode_25xx.htm
您还可以使用HTML转义字符将它们包含在内(通常通过插入框字符的UTF-8序列来复制和粘贴,浏览器似乎会尊重这一点,但如果这不是一个选项),这是四个轻型水平框标记的排列:
────
它呈现为
────
select
元素只能包含optgroup
或option
元素,而option
元素只能包含文本。像<hr>
这样的标记是被禁止的。
我会使用这样的元素来创建分隔符:
<option disabled role=separator>
你可以考虑这样的标记:
<optgroup label="-------"></optgroup>
不过,不同浏览器之间的渲染差异太大,无法令人接受。
<optgroup>
来看看它现在的样子,因为过去几次我都放弃了它,但它仍然是完全不一致的;非常恼人,否则它将是一个有用的功能。 - Orbling<option value disabled>—————————————</option>或者在XHTML中:
<option value="" disabled="disabled">—————————————</option>
<option>----------</option>
或者
<option>__________</option>
但是您不能编写<option><hr /></option>
您也可以向空的<option>
添加CSS类,并使用背景图像
<option class="divider"> </option>
<option>
标签之间添加内容,但没有人考虑过样式化<option>
标签,这是唯一的方法,看起来非常棒。太容易成为真相了吗?看看
<select>
<option>First option</option>
<option>Second option</option>
<option>Third option</option>
<option style="border-bottom:1px solid rgba(153,153,153,.3); margin:-10px 0 4px 0" disabled="disabled"></option>
<option>Another option</option>
<option style="border-bottom:1px solid rgba(153,153,153,.3); margin:-10px 0 4px 0" disabled="disabled"></option>
<option>Something else</option>
</select>
我用了 JSP,但你会发现它是相同的。 我正在遍历 brandMap LinkedHashMap,在其中如果 key >= 50000,则是行分隔符,否则是普通选择选项。(我需要在我的项目中使用这个)
<c:forEach items="${brandMap}" var="entry">
<c:if test="${entry.key ge 50000}">
<option value=${entry.key} disabled>––––</option>
</c:if>
<c:if test="${entry.key lt 50000}">
<option value=${entry.key}>${entry.value}</option>
</c:if>