【问题标题】:div with inline-block children doesn't display consistently with identical CSS带有 inline-block 子项的 div 与相同的 CSS 显示不一致
【发布时间】:2014-07-18 01:54:07
【问题描述】:

我有一个包含多个内联块子级的 div:

DOM 看起来像这样:

它具有以下 CSS:

每个孩子都有以下 css:

如果在 Chrome 调试器中取消选中并重新选中上面标记的 display: block 行,则 div 现在看起来像这样:

请注意,标签之间现在有空格,它们更具可读性。但是,用于渲染它的 CSS 大概是相同的。而且,当未选中特定选择器的display: block时,div实际上仍然是display: block;它只是从一个不太具体的选择器(在我的例子中,div 的 UA 样式表)中获得它。

我希望 div 以第二种方式呈现 - 有没有办法做到这一点? div应该如何渲染,display: inline-block元素之间的间距从何而来?

更新:这可能是由 Chrome 的渲染器和 Meteor 的 Blaze 渲染引擎之间的奇怪交互引起的,除了在高度动态的页面上不会看到。

【问题讨论】:

  • @DanielLisik 根据 Chrome 在父节点上的 Edit as HTML,甚至在我戳 CSS 之前就有空格(几个空格和一个换行符)。那么这可能是一个渲染错误吗?
  • 很可能就是这种性质的东西。我不知道这是否会有所帮助,但是当您取消选中 display:block 时,父级会得到什么 display 值?
  • 它仍然是 display: block,来自 UA 样式表。谜团加深……
  • 天啊!呵呵。您能否检查开关上的 HTML(单击 编辑为 HTML)并密切关注开关上该部分中发生的情况?
  • 似乎可以删除子 <div> 元素之间的所有空格,并手动插入   实体。那么这两种渲染方式就没有差异了。

标签: html css twitter-bootstrap meteor twitter-bootstrap-3


【解决方案1】:

这是评估空白的结果。你可以扔:

font-size: 0;

在父 div 上,这将消失。或者,调整您的标记以删除列表项之间的空间。

【讨论】:

  • 似乎没有办法在不覆盖子字体大小的情况下执行font-size: 0,这需要额外的 CSS 来修复。另外,我想显示空间。
  • 你应该添加边距:0px 2px;吃药
  • 我不同意这个解决方案。它使所有文本消失,需要更多的 CSS 来修复。此外,空白首先存在,这意味着子 div 不应该全部挤在一起。
  • 不要使用字体大小:0;只需添加边距。
  • 那么当在其他浏览器中呈现时,药丸之间会有很大的空间(即正确评估空白)。我试图弄清楚这个的正确渲染是什么,以及如何确保它,而不是进行破解。
猜你喜欢
  • 2015-11-16
  • 2014-11-24
  • 2023-03-28
  • 2013-05-18
  • 1970-01-01
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多