【问题标题】:CSS to display only part of the <select> or drop down listCSS 仅显示 <select> 或下拉列表的一部分
【发布时间】:2013-07-03 11:06:33
【问题描述】:

我有以下下拉列表:

<select>
   <option value="+1">+1</option>
   <option value="+93">Afghanistan (+93)</option>
   <option value="+355">Albania (+355)</option>
   <option value="+213">Algeria (+213)</option>
   <option value="+1">American Samoa (+1)</option>
   ...
</select>

但是,空间对我来说是有限的;我无法显示该国家/地区的全名。一旦选择,我想显示与用户相关的内容。所以我选择通过将选项的文本和国家重新排列为以下内容来仅显示国家代码:

<select style="width: 60px;">
    <option value="+1">+1</option>
    <option value="+93">+93 - Afghanistan</option>
    <option value="+355">+355 - Albania</option>
    <option value="+213">+213 - Algeria</option>
    <option value="+1">+1 - American Samoa</option>
    ...
</select>

并通过在选择上设置宽度。然而,问题是......我刚刚失去了可用性。现在用户不能再使用键盘输入他的国家名称并快速跳转到它。

那么,如果没有 javascript,我该如何解决这个问题?我可以将选择列表重新排列到上一个列表并用 CSS 剪辑它以显示选项的最后部分吗?

【问题讨论】:

  • 我不明白失去空间或limited space
  • 空间,或者更具体地说,宽度

标签: html css styles usability


【解决方案1】:

使用:before 伪元素来显示前缀,例如http://jsbin.com/erazar/1/edit

CSS

option:before {
   content: "(" attr(value) ")";
   display: inline-block;
   margin-right: .5em;    
}

HTML

<select>
   <option value="+93">Afghanistan</option>
   <option value="+355">Albania</option>
   <option value="+213">Algeria</option>
   <option value="+1">American Samoa</option>
</select>

通过这种方法,前缀将出现在选项前面,您的用户将能够选择通过键盘输入其名称的州

【讨论】:

  • 这对我不起作用,伙计。选择时我看到的是国家/地区的名称,而不是其值。
  • 这个样式不影响当前选项:打开选择,你应该看到带有前缀的国家列表(在Fx22测试)
  • 我听到了,我选择了美属萨摩亚,但我仍然将美属萨摩亚视为所选文本及其各自的宽度,而不是 +1。
  • 啊...我刚刚用 Firefox 测试了它,我看到了你做了什么。但是,它不适用于 Chrome 和 IE11。因此,这是不行的。 :(
  • 对不起,但没有 javascript,这是我有的更好的主意。不幸的是,我只在唯一支持选项元素伪元素的浏览器中进行了测试:\
猜你喜欢
  • 2015-05-31
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多