Html IE7显示错误,不应该存在的魔术填充/边距

Html IE7显示错误,不应该存在的魔术填充/边距,html,css,internet-explorer-7,browser-bugs,Html,Css,Internet Explorer 7,Browser Bugs,前言:如果这个问题应该发布在姐妹网站上,那就很抱歉了。现在有这么多人,很难说还有什么人在苏的管辖之下 问题:我对连续的元素有问题。有时它们之间有一个神奇的填充/空白,我不知道为什么 正如您所看到的,我的容器的header div和body div之间有一个空格。让我解释一下我的DOM/CSS是如何设置的: HTML <div class="Product-IconView"> <div class="PIV_TopCap"></div> <di

前言:如果这个问题应该发布在姐妹网站上,那就很抱歉了。现在有这么多人,很难说还有什么人在苏的管辖之下

问题:我对连续的
元素有问题。有时它们之间有一个神奇的填充/空白,我不知道为什么

正如您所看到的,我的容器的header div和body div之间有一个空格。让我解释一下我的DOM/CSS是如何设置的:

HTML

<div class="Product-IconView">
  <div class="PIV_TopCap"></div>
  <div class="PIV_Body">
      ...
  </div>
</div>
正文:

正如你所看到的,CSS也很简单,没有什么特别的。主体内部是另一系列
项目,遵循与此分区相同的原则(容器分区、堆叠子项)。不会有像这样奇怪的填充物

我在IE9中使用了开发人员工具(启用了IE7标准)来检查DOM,看看是什么导致了这种情况(比如页边从顶部往上推或者其他什么)

正如你在这里看到的:

div的边界完整且正确

结论这是一个非常奇怪的错误,我在我早期的设计中看到了它,但也无法在那里找到它。到目前为止,这是我在这个项目中遇到的唯一一个IE7迁移问题。据我所知,我非常严格地遵循HTML标准(我知道IE在某些情况下往往不尊重这些标准,但计划是尽我所能做到这一点)

您的问题:

  • 我应该寻找什么可能导致这种情况
  • 我做错什么了吗?如果是,我如何修复它
  • 有没有更简单/更好的方法
  • 我有什么明显的遗漏吗
同时


如果您需要澄清或更多信息,请随时将其留在评论中,我将在看到它们时予以答复。(在周五晚些时候发布:o)。

找到了答案,所以我将在这里发布给任何登陆这里寻求IE7帮助的人

问题是顶部div的
字体大小
,而我的
行高为1px设置时,渲染引擎仍然为12px字体分配14px,这种不可见的分配/填充/边距/任何内容通过div流出,即使有
溢出:隐藏
或严格的大小限制

只需确保这两行都在我的顶部div中(小于一行文本):

字体大小:1px
行高:1px

…将解决问题


IE7似乎没有很好地遵守线条高度。

我忘了提到,这在IE8/IE9/Firefox/Chrome/Safari中工作得非常好。您使用的doctype是什么?另外,您是否使用了任何类型的重置样式表?尽管我尽了最大努力,但我无法用您的代码重新创建错误。你能试着制作一个示例页面,或者一个展示问题的测试用例吗?如果您这样做,您的问题很可能会得到解决。@Chris Lively:使用重置脚本是的,DOCTYPE
@Chris Lively:对于重置脚本。
12px字体
-这就是为什么我无法重新创建错误,以及为什么没有人能够回答此问题的原因。我怀疑这可能是
字体大小
行高
高度
的组合,但我一直在等待一个测试页面,当然,它从未出现过。啊,嗯,+1。是的,这是我第一个想到的(因此我的线高是1px),但那也是周五晚上,我的想法不正确p谢谢你的努力:)
.PIV_TopCap
{
    margin: 0px;
    padding: 0px;
    height: 10px;

    line-height: 1px; /* For IE so the text doesn't make the div higher */
    overflow: hidden;

    background-repeat: no-repeat;
    background-image: url(/Images/Controls/IconView/PIV-Regular-Top.png);
}
.PIV_Body
{
    height: 266px;

    padding-left: 10px;
    padding-right: 10px;

    background-repeat: repeat-y;
    background-image: url(/Images/Controls/IconView/PIV-Regular-Body.png);
}