【问题标题】:Layout issue in IE- possibly to do with negative marginsIE 中的布局问题 - 可能与负边距有关
【发布时间】:2013-09-17 22:24:48
【问题描述】:

我真的在为(所有版本的)IE 中的布局问题而苦苦挣扎。我正在开发的网站在 Chrome 和 Firefox 中运行良好,但横幅的布局在 IE 中完全错误,它看起来比应有的低几百像素。我不确定这是否是负边距问题或什么问题,并且由于我使用的是 Mac 并且只有静态屏幕截图可供使用,因此我无法进行太多测试。

非常感谢您对此的任何反馈。我附上了一张 IE 屏幕截图的图像,以及它应该是什么样子。本站链接为:http://www.osullivans-pubs.com/draft

编辑:我不确定要包含哪些代码,因为我无法确定问题,但我猜它与这个元素有关:

#back {
overflow: hidden;
min-height: 700px;
margin-top: -235px;
padding-top: 80px;
background-position: center -44px;
text-align: center;
position: relative;
}

编辑:我附上了一张缩小的网站图片,以说明为什么需要负边距。这很难解释,但这与对角线背景以及我需要这些背景达到大约 1600 像素的事实有关(对于更大的屏幕,我不能重复它们,它们是对角线的)。我希望有一些方法可以让 IE 识别负边距,我尝试了 zoom: 1, position: relative 技术,但仍然没有。即使在 IE10 中。

【问题讨论】:

  • 在这里发布相关代码。

标签: html css internet-explorer cross-browser margin


【解决方案1】:

使用负边距对于初级开发来说是个坏主意,只能在没有其他解决方案时使用。

就我个人而言,我认为负利润率是一种黑客行为。

相对位置将使元素相对于其父元素做出响应,但如果您将元素移到其父元素之外且边距为负值,您只能期待奇怪的结果。

根据我的经验,IE 会尝试第二次猜测您想要什么,而 Mozilla 则更具所见即所得。所以跨浏览器的兼容性永远是你的障碍。

如果您希望您的元素始终出现在同一个位置 [相对于像素位置 0,0(左上角)],则在元素上使用绝对定位并指定顶部和左侧。这样你就可以忽略父元素了。

#back {
overflow: hidden;
min-height: 700px;
background-position: center -44px;
text-align: center;
position:absolute; top:30px; left:20px; margin:0px; padding:0px;
background-color:red;
}

当您希望事物根据浏览器大小调整自己重新定位时,这会变得很棘手;所以一定要测试不同情况下的绝对定位,全屏、调整大小、最小分辨率、宽屏、屏幕旋转(如果使用手持设备)。

完全关闭 padding 和 margin,同时使用 margin:0px 定位;填充:0px; 并将背景颜色更改为帮助您查看元素边缘的颜色。 因此,为什么我在上面的示例中添加了一个 reg BG。

一旦元素大致位于正确的位置(+/- 1 像素),您就可以调整边距和填充。

【讨论】:

  • 那真是令人头疼,因为它们在这个站点中被大量使用。我通常不使用它们,但由于该站点的设计,各种对角线背景图像必须重叠,我求助于它们。我也觉得它们是完全有效和受支持的(coding.smashingmagazine.com/2009/07/27/…。重新定位所有这些元素绝对会导致我的网格出现布局问题,并且绝对是一场噩梦(哎呀)。现在很难过......
  • 此外,这些元素中使用的背景图像需要覆盖整个屏幕并居中。如果你缩小网站,你会明白我的意思。我不能用绝对定位来做到这一点。
  • hmmm,你不是让这件事变得简单吗:) 好的,如何将它浮动在一个父 div 容器中,你可以将它放在你喜欢的位置?有点hacky,但应该可以。 CSS 是难以为其编写解决方案的事物之一。没有进入那里弄脏你的手。我对浮动唯一要说的是,一旦你开始添加它们,它们往往会在所有地方都需要,所以要小心。
  • 我认为这种设置不可能。图像和内容元素必须向上推,因为(单独的)背景元素覆盖了太多的水平空间。真的很难解释我的意思,但是由于对角线背景延伸到浏览器宽度之外,我需要将元素向上推,让它们在网格内工作,并居中。有没有办法让 IE 完全识别负边距?甚至 IE10 也忽略了它们。其他所有浏览器测试都可以完美运行。很郁闷..
  • 你可以试试 Firebug for IE。 getfirebug.com/firebuglite 看看它与 FF 的行为有何不同。此外,检查父级上设置的 z-indexes,并为子级设置更高的索引。 (在黑暗中拍摄)
猜你喜欢
  • 2013-07-26
  • 1970-01-01
  • 2011-11-29
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2013-01-31
  • 2011-09-08
相关资源
最近更新 更多