火狐浏览器标签之间的 1px 间距<a>



我在父元素上使用了font-size: 0;,这就是我让链接没有空格但空间仍然存在的原因 Firefox.

请在 Firefox

和任何其他浏览器中对此进行测试,您将看到 Firefox 在链接之间显示一个空格(尽管是 1px),因为没有其他浏览器这样做......好吧IE6和7,但我们不要谈论它们...

http://jsfiddle.net/uZMzA/

有谁知道为什么?以及我如何在不使用javascript来确定浏览器的情况下解决它?

发生这种情况的原因是,在 a 标记之间有一个带有换行符的文本节点。而且由于您已经设置了letter-spacing: 1px;并且 Firefox 编码人员选择以他们的方式实现字母间距,因此您可以在该文本节点之后或之前获得 1px 的字母间距。

正如在其他地方已经暗示的那样,解决方案是更改div#navigation的规则,使其中没有行letter-spacing: 1px,如下所示:

div#navigation {
  position: relative;
  padding: 1px 0;
  border-top: 1px solid black;
  border-bottom: 1px solid black;
  font-family: Georgia, Serif;
  margin: 0 auto 2px auto;
  width: 400px;
  font-size: 0;
  text-shadow: 0 1px #fff;
}

您可以在此处看到应用了修复程序的工作版本:http://jsfiddle.net/uZMzA/10/

也许你的意思是:

letter-spacing: 0

这会导致您的"错误"


编辑:

如果您希望字母间距为 1px,这是一个很好的解决方案,请摆弄一下

只需添加:

display: inline-blockDiv容器 css,float: lefta元素。

阅读这篇文章。您将在其正文和注释中找到所有可用的技术,以及它们的权衡。

http://css-tricks.com/fighting-the-space-between-inline-block-elements/

首先提到"删除空格"选项,因为它最容易实现。但它也"有点时髦"。

注释中列出了"基于字母间距"选项,但请注意,如果要使IE <8满意,则必须包含额外的css。

只需像这个jsFiddle示例一样从代码中删除空格即可。

.HTML:

<div id="navigation">
    <a href="#">Link1</a><a href="#">Link2</a><a href="#">Link3</a><a href="#">Link4</a>
</div>​

这很愚蠢,我无法真正解释这种情况的"原因",但这里有两种方法可以纠正显示。

FF不喜欢代码中的空格。 删除<a>标记之间的回车符或注释掉它们,如下所示:

<div id="navigation">
    <a href="#">Link1</a><!--
    --><a href="#">Link2</a><!--
    --><a href="#">Link3</a><!--
    --><a href="#">Link4</a>
</div>

最新更新