如何添加图标以选择框选项?

时间:2015-06-09 19:35:06

标签: html css unicode

基本上我有一个带有修饰符下拉列表的文本框。我想在选择时显示当前选择的图标。当前设置(使用UNICODE)的问题在于图标并不总是显示,例如在谷歌浏览器上(除非已安装特定字体)。

例如,请看小提琴: https://jsfiddle.net/q5eLLu2h/

<select class="squareDropdown" id="da" name="da">
  <option value="AND">➕&nbsp; AND</option>
  <option value="EXCEPT">➖&nbsp; EXCEPT</option>
  <option value="OR"><b>O</b>&nbsp; OR</option></select>
<input class="textArea" id="d" name="d" placeholder="d" type="text" />
<br>
<br>
<br>
<select class="squareDropdown" id="ca" name="ca">
<option value="OR"><b>O</b>&nbsp; OR</option>
<option value="AND">➕&nbsp; AND</option>
<option value="EXCEPT">➖&nbsp; EXCEPT</option>
</select>
<input class="textArea" id="c" name="c" placeholder="c" type="text" />  

有人对我能做什么有任何建议吗?要么是显示unicode图标的方法(比如通过强迫人们下载它们?),要么是将图片或图像放入选择框或其他任何内容的简单方法。安装了Jquery UI,我可以用它做什么吗?

谢谢

1 个答案:

答案 0 :(得分:2)

选项很难风格化。

基本原因是他们正在进入操作系统进行生成,而不是像大多数其他网站HTML元素那样仅通过浏览器生成。

这就是为什么文件上传表单字段提交&#39;按钮不遵循与表单上任何其他提交按钮相同的规则。

这里有一些更详细的about limited and inconsistent possibilities和一个证明<option> can't have any children的问题(不幸的是,这反过来阻止了psuedo元素的工作,因为伪造的元素就像DOM节点一样呈现)。

所有这些意味着使用图标字体不会起作用,因为您需要仅使用带有图标的位来定位,而您只能使用额外的子元素。

使用JQuery

有很多方法可以模仿选择选项表单字段和各种javascript插件,这些插件可以为您提供更多控制,但是,它们有一个重要的警告。标准选择元素带来了所有额外的可用性和可访问性功能(如键盘焦点和操作)javascript插件编写者不必考虑,所以要小心使用。

值得记住的是,当您使用JQuery替换复杂功能时,您在测试/开发中会遇到相当多的开销 - 选择元素只适用于所有浏览器,而不需要实际的功能测试。如果您确实关注所有辅助功能点,这将更加可观。

然而,MDN的文章确实认为这是最好的方法,并为解决方案列出了一些好的插件,我可以使用MDN来考虑我上面提到的所有重要内容。

为了链接腐烂,以下是他们建议链接到产品的三个中的两个:

UniForm

FormalizeMe

(请注意,我还没有尝试过这些,我只是信任Mozilla!)

<强>的Unicode

您正在尝试在选项标签中使用unicode。这应该有效,如果您执行以下操作,则无需强制下载用户:

  • 使用包含要定义的unicode字符的字体。
  • 确保您的文档中的字符集设置为utf-8

但是,您只会获得角色,而不会使用可设计的图标,并且您可能会遇到网页保护或专有字体。

jsfiddle here使用网络安全font-family: sans-serif进行演示,并使用big list of those that are commonly supported

从此链接中获取字符

最后

对于小选项集radio buttons are probably better。用户可以立即看到可用的选项,而不是每次都打开它们(更好的可学习性,更快的认知);此外,他们可以进行所需的选择,或者每次只需点击一下即可更改所需的选择。在UX.SE的那些人讨论了进一步使用的内容,raising other points

如果您考虑<select>是否是最佳选择,那么您的所有问题都可能会消失。