【问题标题】:CSS unwanted spacing between anchor-tag elements锚标签元素之间的 CSS 不需要的间距
【发布时间】:2011-10-17 15:36:57
【问题描述】:

我有这个样式表:

*{
    padding: 0px;
    margin: 0px;
}

a{

  background:yellow;

}

还有这个网页:

<a href="/blog/">Home</a>
<a href="/about/">About</a>
<a href="/contact/">Contact</a>    

结果:

如何使这些锚标记相互“接触”,去除中间不需要的空间?

谢谢 卢卡

【问题讨论】:

  • 换行符,在大多数 HTML 上下文中,在渲染视图中创建一个空间。

标签: html css anchor margin


【解决方案1】:

你可以使用弹性框:

div {
    display: flex;
}
<div>
    <a href="/blog/">Home</a>
    <a href="/about/">About</a>
    <a href="/contact/">Contact</a>   
</div>

或者如果你使用 Bootstrap:

<div class="d-flex">
    <a href="/blog/">Home</a>
    <a href="/about/">About</a>
    <a href="/contact/">Contact</a>   
</div>

【讨论】:

    【解决方案2】:

    以上所有答案都显示了一些摆脱不需要的空白的巧妙方法,但我看不到我已经使用了近十年的那个;所以对于那些仍在与那个空白搏斗的人来说,这是另一个简单的解决方案——使用浮动!

    HTML:

    <div id="test">
      <a href="/blog/">Home</a>
      <a href="/about/">About</a>
      <a href="/contact/">Contact</a>   
    </div>
    

    CSS:

    #test { 
      overflow:hidden; 
     /* this isn't really required here but helps; 
     or use your preferred method for clearfix  */
    }
    
    #test a { 
      float:left; 
      background: yellow;
    }
    

    jsfiddle: http://jsfiddle.net/fjj7dsyx/2/

    【讨论】:

      【解决方案3】:

      把它们放在ul/li结构中怎么样?

      #test li {
          background:yellow; 
          float: left;
          list-style: none;
      }
      <ul id="test">
        <li><a href="/blog/">Home</a></li>
        <li><a href="/about/">About</a></li>
        <li><a href="/contact/">Contact</a></li>
      </ul>

      【讨论】:

      • 我认为这实际上是最好的解决方案,因为 ul>li 无论如何都应该用于导航链接,因为它最适合可访问性。
      • 你想在li 中使用什么元素是被禁止的?我认为您可以使用大多数可用的元素。见the specs。内容模型是 'Flow content' ,这意味着您可以使用正文中可用的大多数元素。
      【解决方案4】:

      我想我可能会找到一个很酷的方法来解决它:-)。我从使用&lt;!-- comments --&gt; 填充空的&lt; span &gt;s 等开始。

      所以如果你想保持你的锚定新行结构并且不想要它们之间的空格......只需在行尾打开一个块注释并在新行上结束它之前新的&lt; anchor &gt;

      像这样:

      <div id="test">
          <a href="/blog/">Home</a><!--
          --><a href="/about/">About</a><!--
          --><a href="/contact/">Contact</a>   
      </div>
      

      和演示:http://jsfiddle.net/Lukis/reZG2/1/

      【讨论】:

      • 感谢您的出色解决方案!
      【解决方案5】:

      你可以使用这个技巧来摆脱空间:

      HTML:

      <div id="test">
          <a href="/blog/">Home</a>
          <a href="/about/">About</a>
          <a href="/contact/">Contact</a>   
      </div>
      

      CSS:

      #test { font-size:0; }
      #test a { font-size:16px; background:yellow; }
      

      现场演示: http://jsfiddle.net/quucy/

      【讨论】:

      • 小心这段代码,因为它可能被网络爬虫解释为滥用,因为你明确地将文本隐藏在包含链接的元素中。确实,由于更高的特异性规则,链接本身是可见的,但网络爬虫仍然会在容器中看到一堆链接,这些链接告诉其所有祖先隐藏其文本内容。
      • @holodoc 你知道有哪些文章对此进行了详细介绍吗?这个问题有多真实?
      • @aaaidan 这对Matt Cutts:)来说是个好问题
      • 我也遇到了问题,它不再断开链接,它们都显示在一行上,因为换行符为 0。我将 #test element font-size: 1px;问题就消失了。
      【解决方案6】:

      链接之间的空格可能是由代码中的换行符产生的,但这实际上取决于您在哪个浏览器中获得这种行为(有些浏览器会忽略这些字符,有些则不会)。

      尝试将所有三个标签放在一行中,并且它们之间没有空格。

      <a href="/blog/">Home</a><a href="/about/">About</a><a href="/contact/">Contact</a>
      

      【讨论】:

        【解决方案7】:

        您需要删除标签之间的空格(在本例中为换行符)。一些浏览器将其呈现为空间。

        【讨论】:

        • 我以为所有浏览器都将空格折叠成一个空格字符?哪些不这样做? (我不是想诋毁你,我真的很感兴趣。)
        • 一些=全部,显然。 ;) 我没有使用每个网络浏览器的经验,所以我没有做出全面的声明......
        • 这是 HTML 标准的一部分 - 空白被压缩为一个空格。
        猜你喜欢
        • 2013-08-01
        • 1970-01-01
        • 2014-08-13
        • 2015-02-24
        • 2014-07-02
        • 1970-01-01
        • 2014-01-27
        • 2013-12-04
        相关资源
        最近更新 更多