【发布时间】:2017-10-14 12:53:40
【问题描述】:
假设我们有以下元素:
<div>STACKOVERFLOW</div>
我们想让A 变成红色,但不改变单词的字距调整属性。换句话说,我们希望单词的显示方式与之前完全相同。这里有一个类似的问题:
change-color-of-one-character-in-a-text-box-html-css
但是,使用 span 元素会更改单词的字距调整属性(在 A 前面添加更多空格)。
这是referenced SO question中的jsfiddle截图
如您所见,span 元素似乎增加了一点空间。
更新
我将添加一个屏幕截图和一些代码来说明我的意思。如果您在屏幕截图中查看单词ICON,它会被标记为这样(并且跨度会导致添加额外的空间):
<span class="u-text-uppercase u-text-color-md-grey-900 u-font-weight-900">Ic</span>
<span class="u-text-uppercase u-text-color-md-pink-a200 u-font-weight-900">o</span>
<span class="u-text-uppercase u-text-color-md-grey-900 u-font-weight-900">n</span>
<span class="u-text-uppercase u-text-color-md-grey-800 u-font-weight-100">Utility Tests</span></h1>
div { font-size: 3em; background: blue; display: inline-block; }
span { color: red; }
<div>STACKOVERFLOW</div>
<div>ST<span>A</span>CKOVERFLOW</div>
<img src="https://i.stack.imgur.com/EjnDF.png">
cmets 颜色实用程序中的每个请求来自 SuperflyCSS Color Utilities
字体工具来自SuperflyCSS Font Utilities
而u-text-uppercase 实用程序来自于字体实用程序来自SuperflyCSS Format Utilities
另一个更新
谢谢你们 - 正如接受的答案中提到的那样,关键是将 <span> 元素保持在同一行。当我这样做时,结果如下:
【问题讨论】:
-
有趣,以前从未注意到。 jsfiddle.net/qLft5yt7 不知道是否有办法解决这个问题,除非你想开始摆弄负边距和幻数......也许一些更晦涩/新/浏览器特定的字体渲染属性可能会有所帮助以某种方式。
-
刚刚在 Firefox 和 Chromium 中尝试过 @CBroe fiddle;注意到绝对零字距调整:这两行在我的机器上是逐像素相同的,即使在
A之后为每个字符添加跨度也是如此。您可以添加此字距调整问题的屏幕截图吗?我想知道是否有多个变量影响渲染... -
我将发布正在使用的实用程序库的链接。
-
@Ole 在一行中不保留
span也是可能的。但如你所愿......:) -
@ankitapatel 您在第一个答案中基本上是正确的,跨度在同一行。伙计们在这里付出了很多努力,所以请给他们一些支持。