【发布时间】:2012-05-28 22:36:57
【问题描述】:
我真的很困惑为什么会发生这种情况。 http://syndex.me 上的帖子有 2px 的边距。当页面最初加载时,这是遵守的。当第二批帖子加载时(14 个帖子开始加载),您会看到出于某种奇怪的原因,右侧的帖子实际上比应有的短 2px。
更奇怪的是,检查帖子显示它们实际上设置了margin:2px
更奇怪的是,这只发生在左边距或右边距,而不是顶部和底部(?!)
做了很长一段时间的前端工作,我很有信心这是一个奇怪的案例。
我在 firefox、safari 和 chrome 上遇到了这个渲染问题。
如果我使用检查器滚动帖子,我可以看到每个帖子确实有 2px 的边距,只是第二个帖子(右侧)的边距开始就好像它旁边的帖子有一个零边距,但肯定也有边距。
好像帖子忽略了他们的邻居左右边距?
有一件事,帖子使用display:inline-block。我不明白的是:为什么这种行为只在延迟加载后才会出现?而且我知道内联元素有 2 到 4 px 的自然空间,但这忽略 2px,看起来很奇怪。
我不知道从哪里开始寻找这个,任何帮助将不胜感激。
【问题讨论】:
-
FWIW,我有 Chrome/Linux,如果我正确理解您对“帖子”的含义,我会看到帖子之间的差距。或者你的意思是总共应该有 4px (从他们相遇的每个元素中取 2 个像素)? stommepoes.nl/tempmargins.png这里有很多div;您是否通过简化的单个 div 或图像以及延迟加载的测试用例看到了这一点?
-
Dag Stommepoes,是的,所有边距总共 4px。延迟加载后,所有帖子在查看检查器时仍然有这个,但总共有 2px 而不是 4px 的帖子彼此并排,但不是高于或低于。这对我来说没有意义。
-
我对 css 进行了深入研究,真的,这很奇怪。然而,正如 stommepoes 所说,CSS/HTML 结构本身非常复杂。您应该尝试尽可能简化,并继续简化直到边距行为符合您的要求,然后逐步恢复元素以帮助您找到发生这种情况的位置。
-
总之,它是非常嵌套的,但是将其剥离,尤其是作为一个 tumblr 皮肤将是一项艰巨的任务。我实际上只是对为什么会发生这种情况感兴趣。也许我不了解有关内联块行为之类的东西。但无论如何,实际的“错误”发生在所有嵌套 div 的超级容器上,理论上它不会受到它的孩子的影响,对吧?太奇怪了。它也发生在所有帖子上,无论如何每个帖子都有不同的巢结构。
-
修复其中的一些137 HTML validation errors 不会有什么坏处。大多数情况下,它确实有助于解决许多奇怪的问题。