【问题标题】:Why do bottom padding and bottom margins not help to add vertical spacing between these links?为什么底部填充和底部边距无助于在这些链接之间添加垂直间距?
【发布时间】:2015-03-18 23:49:29
【问题描述】:

我有一个带有链接的 div。我用<br> 标签将它们排列在一起,因为我不知道如何使用CSS 添加垂直间距。我尝试在 a 样式规则中添加底部边距和底部填充,但它似乎没有任何效果(为什么?)。我可以添加另一个 <br> 标记以进一步分隔它们,但我必须假设有更好的方法来使用我无法弄清楚的 CSS。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
html, body 
{
    height: 100%;
    margin: 0;
    padding: 0;
    font-weight:normal;
    font-size:12pt;
    font-family: Verdana, Arial, Helvetica, serif, sans-serif;
    background:lime;
}

#linksouter
{
    margin: 0;
    padding: 0;
    border-style:solid;
    border-width:0px;
    position:absolute;
    top: 0px;
    left: 0px;
    width: 80px;
    background: blue;
    text-align:left;
}
#linksinner
{
    margin: 80px 0 0 .5em;
    width:100%;
    background:fuchsia;
    display:inline;
    height:100%;
}
#linksinner a
{
    color:red;
    text-decoration: none;
    background:yellow;
}
</style>
</head>

<body>
<div id="linksouter">
    <div id="linksinner">
    <a href="#">1</a><br />
    <a href="#">1</a><br />
    <a href="#">1</a><br />
    <a href="#">1</a><br />
    <a href="#">1</a><br />
    </div>
</div>

</body>
</html>

【问题讨论】:

    标签: css html anchor spacing


    【解决方案1】:

    垂直边距和填充仅适用于块级元素,如 divpa 是一个内联元素,所以它不起作用。

    为了执行您想要的操作,您需要将以下样式添加到您的链接:

    display:block;
    

    只有这样才能正确应用顶部和底部的边距和分页

    编辑:如果你这样做,你也可以摆脱&lt;br/&gt;标签

    【讨论】:

    • 为什么要为块元素制作标签只是为了垂直分隔它们?将它们包含在块元素中更合适恕我直言。
    • 为什么在不需要的时候再添加一层元素??那将只是为了演示目的而添加另一层元素。应该使用 CSS...
    • @Darko - 好点。我认为你的方法是有道理的。我需要阅读块与内联。似乎我一直遇到这个块与内联问题,却没有意识到这是我的问题的原因。谢谢!
    【解决方案2】:

    要添加垂直间距,您可以这样做:

    #linksinner
    {
        line-height: 150%;
    }
    

    边距不会对&lt;a&gt; 元素产生任何影响,因为它们是内联的。另一种解决方案是制作它们:

    display: block;
    

    这意味着他们尊重你的利润,然后你就不需要你的&lt;br&gt;s。

    【讨论】:

      【解决方案3】:

      链接不能定义边距,因为默认情况下它们是“内联”元素。内联元素不能应用边距或宽度规则。要允许内联元素应用这些内容,您需要在规则中添加另一个属性。

      试试这个:

      #linksinner a {
          display: inline-block;
          /* Add your margin or height rules here */
      }
      

      我认为对于你想要做的事情,你应该使用一个列表:

      <ul id="linksinner">
          <li><a href="#">1</a></li>
          <li><a href="#">1</a></li>
          <li><a href="#">1</a></li>
          <li><a href="#">1</a></li>
          <li><a href="#">1</a></li>
      <ul>
      

      然后您可以将边距或填充规则应用于&lt;li /&gt; 标签。如果您不想显示要点,请使用:

      #linksinner li { list-style-type: none}
      

      【讨论】:

      • 这不能跨浏览器工作。要让 inline-block 在所有浏览器上正确显示,有一个 hack,但它不像你拥有的那么简单。
      • 为什么不能跨浏览器工作?每个主流浏览器都支持它:quirksmode.org/css/display.html
      • 您提供的链接说对 IE6 和 7 的支持不完整,在 FF2 中根本不支持。我不确定您如何推断它在每个主要浏览器中都可以使用...
      • Firefox 2 的市场份额相当低(它落后了几个主要版本),而 IE6/7 可用于锚标记,这正是我在示例中使用的。然而,IE6/7 的“不完整”应该是“错误的”,因为只要你正确触发 hasLayout,它就可以工作,尽管锚标签无关紧要。
      【解决方案4】:

      您需要为锚标签而不是 div 提供填充或边距。但实际上不要,而是这样做:

      <p><a href="#"></a></p>
      

      并给 p 一个 padding-bottom 或 padding-top。

      【讨论】:

        猜你喜欢
        • 2015-12-02
        • 2011-06-13
        • 1970-01-01
        • 1970-01-01
        • 2010-10-08
        • 2012-08-13
        • 2022-11-25
        • 2018-05-30
        • 1970-01-01
        相关资源
        最近更新 更多