【问题标题】:How to remove invisible margin created by line break in source code on inline-block <a> element如何删除内联块 <a> 元素源代码中由换行创建的不可见边距
【发布时间】:2012-08-01 19:04:00
【问题描述】:

我有一个&lt;a&gt; 元素作为具有固定宽度的内联块。我想将&lt;a&gt; 框并排显示,每行两个框(与first example 完全相同)。但是如果每个盒子元素都在源代码中的新行中(second example),盒子会获得一个不可见的边距,如果你看一下例子,你可以看到例如Chrome 开发工具。父包装器的宽度和内边距,以及每个盒子的边距都是精确计算的,因此添加的不可见边距将第二个盒子向下推到下一行。

我可以只使用第一个示例的代码(所有没有换行符的元素直接在彼此后面),但我想知道如何删除这个不可见的边距,以便两个框再次彼此相邻在包装器 div 中(就像在第一个示例中一样),即使每个 &lt;a&gt; 元素都在源代码的新行中。

例子:

1.) 代码中没有换行符(我想要的布局):http://jsfiddle.net/mLa93/2/

2.) 代码中有换行符(&lt;a&gt; 元素更改布局后添加换行符):http://jsfiddle.net/mLa93/3/

【问题讨论】:

  • 我没理解正确,你想格式化html还是看看。你是说我们做 viewsource 的时候,它应该是格式正确的
  • 我想到了,但是如果链接框的数量不均匀(例如每行 3 个框,而您有 5 个框),我希望最后 2 个框位于中间而不是居中向右或向左对齐。
  • 那是一个不同的问题。跟换行没关系

标签: html positioning css


【解决方案1】:

正如 fcalderan 建议的那样,父级上的 white-space:nowrap 应该可以工作。有关示例,请参阅http://jsfiddle.net/kkpKg/。如果没有,那么您一定是在做一些不同或错误的事情。

好的,现在我明白了:-)

最好的解决方案省略换行符,但是如果您不希望这样做,最好的方法是将它们注释掉:

  <div id="wrap">
       <a href="#">box 1</a><!--
    --><a href="#">box 2</a><!--
    --><a href="#">box 3</a>
  </div>

如果这不可能,我唯一能想到的(并且当前浏览器支持)是将#wrap 中的 line-height font-size 设置为零并且返回链接中的原始大小:

#wrap {
  font-size: 0;
}
#wrap a {
  font-size: 14px;
}

【讨论】:

  • 您的第三个示例在 Chrome、FF 和 IE8 中看起来完全符合您的要求。也许它是一个特定的浏览器?或者,也许我完全错过了你想要的东西。你能张贴一张你期望它的样子吗?
  • 我在 OS X 上使用 Chrome、Safari 和 FF 进行了检查。我想要的是第一个示例中排序的框(包装器中的所有框,第一行两个,一个在第二行的左侧),但在第三个示例中使用white-space:nowrap,第三个框在同一行的说唱歌手之外。
  • 我又重写了这篇文章,希望现在更清楚一点。
  • 刚刚测试过,first suggestion 工作正常,但second one 不太好……我有什么问题吗?
  • 我可以发誓它昨天工作,因为我试过了 :-) 无论如何它确实适用于 font-size,但是需要您将 font-size 设置为链接上的绝对大小,如果您想让用户使用他选择的字体大小,这可能不是一个好主意。
【解决方案2】:

Chris Coyier 发表了一篇关于这个问题的好文章:

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

【讨论】:

    【解决方案3】:

    我没有意识到这个问题来自一年前!
    由于您花了这么长时间试图弄清楚这一点,我做了一些研究并发现了一个类似的问题。我在这里调整了你的代码
    solution
    它现在应该可以工作了。因为你之前提到的浮动案例,我放置了 5 个块

    编辑:问题是你的利润。您有 10 像素的填充和 10 像素的边距。如果您将 div 设为 230px (3x10px + 2x100px),您将获得与第一个小提琴相同的效果。

    【讨论】:

    【解决方案4】:

    尝试在父元素(链接的容器)上使用white-space:nowrap,并可能在链接上使用white-space: normal

    【讨论】:

    • 似乎不起作用。我将所有链接框放入一个单独的 div 容器中,使用 white-space:nowrap 并将所有链接设置为 white-space: normal,但问题是链接随后会脱离容器框。
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 2011-06-19
    • 2018-06-09
    • 2021-01-23
    • 2011-06-14
    • 2013-06-03
    • 1970-01-01
    相关资源
    最近更新 更多