【发布时间】:2016-02-16 23:29:36
【问题描述】:
我很好奇 Imgur 如何呈现他们的赞成/反对箭头:
我以为它们是图像,但我发现了一些我没想到的东西:
包含向上和向下箭头字形的自定义字体,分别映射到“o”和“x”字符:
现在这种方法被认为是可以接受的吗?我从未考虑将自定义字体用于在语义上不映射到字母表的内容。这种方法甚至不在我的网页设计最佳实践的雷达范围内。
我可以想象原因:
- 您的网站使用可映射到单字符代码的标准图标集。
- 您只需要控制图标的前景色/背景色。
- 您希望图标的比例与文本相同。
我想知道反对使用这种方法的具体原因。
特别是,我正在寻找解决以下任何问题的答案:
- 浏览器/平台兼容性
- 未来维护影响
- 语义
- 性能
- 标准合规性
到目前为止,我唯一想到的是,从语义上讲,将 upvote 图标 映射到字符 'o' 和 downvote 图标 到字符'x'。而且,具体来说,我不是在谈论键盘映射,而是语言映射、字符代码。在我看来,在这种情况下,光栅图像或 SVG 是更可取的选择。
我想到了另一种可能性:语言和编码兼容性。页面的htmllang 属性或字符编码是否会对字符映射到CSS 样式表中的字体产生任何影响(样式表使用'x' 表示downvote 图标)?
但是,我确信 Imgur 已经考虑到了这一切。那么,为什么我错了?
【问题讨论】:
-
css-tricks.com/html-for-icon-font-usagecss-tricks.com/svg-sprites-use-better-icon-fonts也许这两篇文章对你有点帮助。字体图标现在非常流行(例如:github.com)。
-
@makshh 谢谢 - 您的第一个链接中的这些 sn-ps 值得注意:“将图标映射到字母几乎没有意义。” 另外: “更好的是,我喜欢将图标映射到 Unicode 的“私人使用区域”的想法。据我了解,这正是它存在的原因,用于您自己的特殊字符。以这种方式映射,您不会有屏幕阅读器朗读该角色的危险。”
-
@makshh 来自第二个链接:“奇怪的失败:图标字体似乎以奇怪的方式失败。例如,您将字符映射为普通字母,然后字体加载失败,您会得到随机字符比比皆是。或者你映射到“私人使用区域”,一些浏览器决定将它们重新映射到像玫瑰这样非常奇怪的字符,但很难复制。或者你想在 CDN 上托管 @font-face 文件,但这是跨域的,Firefox 讨厌这样,因此您需要您的服务器提供正确的跨域标头,但您的 Nginx 设置并没有正确处理。SVG 赢得了这一点。”
标签: html css icon-fonts