我需要创建一个样式丰富的文本,该文本不会在视觉上显示特定字符,但是确实包含用于其他目的的字符。例如,用户界面可能显示类似$12345
的内容,但是底层文本实际上是$123.45
。
Search Google for "X"
的行中具有一个选项,其中 X 是基础文本(假设浏览器支持)。 。这是我当前的解决方案:
body {
font-family: sans-serif;
}
.price {
line-height: 4.4rem;
font-size: 4rem;
}
.cc, .cf {
font-size: 0.6em;
vertical-align: super;
margin: 0 2px;
}
.cs {
opacity: 0;
margin: 0 0 0 -.28em;
}
.ci {
font-size: 4.4rem;
}
<span class="price" aria-label="$123.45">
<span class="cc">$</span><span class="ci">123</span><span class="cs">.</span><span class="cf">45</span>
</span>
但是,我不确定具有不可见(opacity: 0
)元素是否真的是实现此目的的最佳方法-感觉有些不足,也许某些聪明的爬虫也可能会这样看。另外,-.28em
不可扩展-这只是我能找到的最好的数字,我必须针对不同的字体或字体大小对其进行调整。
我可以将.cs
更改为display: inline-block; width: 0
来解决margin
的问题,但是如果您双击123
选择'word'或单击三次以选择该块,未选择45
。因此,保持.cs
内联对于确保将整个文本视为一个连续的文本很重要。
所以我的问题是,使用HTML5和CSS,选择与显示的内容不同的语义正确方法是什么?
答案 0 :(得分:1)
字体大小0是您可以在此期间尝试的替代方法。
.cs {
font-size: 0;
}
信息将按照您的要求保留在屏幕阅读器和剪贴板上