代码之家  ›  专栏  ›  技术社区  ›  Heinzi

CSS单词的字母间距部分

  •  1
  • Heinzi  · 技术社区  · 16 年前

    我想在HTML中这样做:

    "T i t l e"
    

    The W3C recommends 使用CSS属性 letter-spacing 而不是插入空格。因此,我可以执行以下操作: &quot;<span style="letter-spacing: 0.5em;">Title</span>&quot;

    结果如下:

    "T i t l e" (sometimes IE), "T i t l e " (all other browsers)
    

    备选方案,使用 &quot;<span style="letter-spacing: 0.5em;">Titl</span>e&quot; 结果

    "T i t le" (sometimes IE), "T i t l e" (all other browsers)
    

    有一些吗? 容易的 优雅的 如何在所有常见浏览器(IE6-8、FF、Opera、Safari)中获得所需的结果?我知道我可以用 <span class="a"><span class="b">Titl</span>e</span> conditional comments 这会根据浏览器的选择分配正确的CSS,但我希望避免将HTML和CSS与特定于浏览器的解决方案混淆在一起。


    编辑:关于“有时是IE”:我有两台机器,都有Windows7和IE8(8.0.7600.16385)。其中一个给出了左手的结果,另一个给出了右手的结果(对于 确切地 相同的HTML文件)。不幸的是,客户的IE7产生了左手的结果…

    3 回复  |  直到 16 年前
        1
  •  3
  •   Alohci    16 年前

    您是否考虑过在您的范围内增加右边距-0.5em?

    例如

    &quot;<span style="letter-spacing: 0.5em; margin-right:-0.5em">Title</span>&quot;
    

    在FF 3.5.7、Opera 10.10、Chrome 3.0.195.38、IE6、IE7和IE8标准和兼容模式中进行测试,它是一种工作。在您的确切示例中,这似乎是可以的,但如果跨度有背景色,这将是不正确的,因为这将泄漏到第二个引号。

    此外,您还需要注意不要在跨度中添加任何导致IE6、IE7中的hasLayout被设置的CSS,因为这样会破坏它。

    评论:

    这是一种非常奇怪的行为。CSS 2.1和更早版本对最后一个字符之后应该发生什么相当模糊。它说的是间距 之间 字符,但当范围被视为较大文本字符串的一部分时,这是不够的。微软最初似乎对其他浏览器制造商得出了不同的结论。在IE8中,微软选择切换并复制其他浏览器。

    另一方面,CSS 3非常清晰。它提供了以下示例:

    例如,给定标记

    <P>A<LS>B<Z>CD</Z><Y>EF</Y></LS>G</P>

    以及样式表

    LS字母间距:1em;

    Z字母间距:0.3em;

    Y字母间距:0.4em;

    间距为

    A[0]B[1em]C[0.3em]D[1em]E[0.4em]F[0]G

    注意d、f和g之后的距离。这显然说明了IE6、IE7的行为。

    应该注意的是,CSS 3的部分是一个草稿,并且该示例是在IE8创建之前编写的。因此,在IMO看来,未来CSS 3的需求可能会发生很大变化。

        2
  •  2
  •   Ned Batchelder    16 年前

    我在IE8中尝试过你的代码,得到了“T I T L E”。也许您应该尝试不同的doctypes,看看浏览器是否会响应这些doctypes并调整它们的css行为。

        3
  •  1
  •   Fred    16 年前

    你试过用px代替ems吗?IE有时会用ems做一些有趣的事情-尝试以下方法:

    <span style=“字母间距: 10px;“>标题</span>