【问题标题】:Why does space between label and span add height to div (only Chrome)?为什么标签和跨度之间的空间会增加 div 的高度(仅限 Chrome)?
【发布时间】:2013-12-04 12:43:25
【问题描述】:

我在客户网站上遇到了这个问题。我已经缩小了这个问题,发现问题是一个介于结束标签和结束跨度之间的空格。比较这两个:

<div class="outerdiv">
 <span class="outerspan"><span class="innerspan"></span>
 <input type="radio" value="true" checked="checked"><label>Label</label></span>
</div>


<div class="outerdiv">
 <span class="outerspan"><span class="innerspan"></span>
 <input type="radio" value="true" checked="checked"><label>Label</label> </span>
</div>

在 Chrome 中,外部 div 的高度差异很大,差异基于标签的边距。不在FF。它似乎与内联块有关。但是,我似乎无法理解这些数字,而且 Chrome 开发人员工具似乎也无法帮助我弄清楚它们。

这是一个显示高度的小提琴:

http://jsfiddle.net/3hHk5/6/

更新: Safari 也增加了高度,但不如 Chrome。数字对我来说似乎很随机。

澄清: 我想了解 为什么 FF、Chrome 和 Safari 之间的高度不同以及数字的来源。我的特定问题的解决方法可能只是删除空间:)

【问题讨论】:

标签: html dom webkit css


【解决方案1】:

innerspan 中删除 float:left,似乎对你有用。我在这里完全理解了 span/float 的目的。使用 float 从文档流中删除元素。如果要将文本左对齐,请使用 text-align:left。

编辑:

HTML 中的空格会影响所有的内联元素,尤其会影响高度。您在外跨上使用了 display:inline-block。如果您注意到,您的第二个 DIV 中的结束跨度标记之前有空格。这就是额外高度的原因。

<div id="space" class="outerdiv space">
<span class="outerspan"><span class="innerspan"></span><input type="radio" value="true"     checked="checked"><label>Label</label> </span>
</div>

您会注意到,如果您删除结束 span 标签之前的空格,它会影响高度。因此,无论使用 display: block 都会忽略空格或删除 HTML 中的空格。

【讨论】:

  • 感谢您抽出宝贵时间。如果我不清楚,我很抱歉,但我想了解为什么 FF、Chrome 和 Safari 之间的高度不同以及数字的来源。
  • 再次感谢,但我不明白的是1)为什么FF中没有额外的高度? 2)如果我用“FOO”替换空间,为什么Chrome中没有额外的高度? 3)为什么FF、Chrome和Safari的高度不同,后者都是webkit?这与默认行高有关吗? 4) 高度是如何计算的? css中的数字不能加起来就是div的实际高度。
  • 严格来说是特定于浏览器的!当行内元素中有空格时,在某些浏览器中空格会换行,并且新行的高度受浏览器的 line-height 设置的影响。有些浏览器会简单地忽略行内元素的空白。
  • 谢谢,我会接受你的回答!不过,我仍然觉得我需要更多地了解这一点。我认为现代浏览器的状态比这更好。
  • 谢谢!您可能想了解“空白”以及如何在不同浏览器中处理这些值。如果您将空白设置为默认值“正常”以外的某个值,您会再次注意到多余的高度已被删除。
【解决方案2】:
.outerspan {
    display:block;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2020-02-12
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多