IE8忽略绝对定位和边距:自动

时间:2012-11-10 22:04:53

标签: html css internet-explorer-8

我有一个带有滚动内容的灯箱式div,我试图在视口中将其限制为合理的大小。我也希望这个div水平居中。这在Fx / Chrome / IE9中很容易。

我的问题是IE8忽略了我用来调整内容大小的绝对定位,以及我用来水平居中灯箱的规则margin: 0 auto

  1. 为什么?
  2. 我有哪些解决方法?
  3. 编辑:通过在父元素上设置text-align:center来修复居中问题,但我不知道为什么这样可行,因为我想要居中的元素不是内联的。仍然坚持绝对定位的东西。

    HTML:

    <div class="bg">
      <div class="a">
        <div class="aa">titlebar</div>
        <div class="b">
          <!-- many lines of content here -->
        </div>
      </div>
    </div>
    

    CSS:

    body { overflow: hidden; height: 100%; margin: 0; padding: 0; }
    /* IE8 needs ruleset above */
    
    .bg {
     background: #333;
      position: fixed;
      top: 0; right: 0; bottom: 0; left: 0;
      height: 100%; /* needed in IE8 or the bg will only be as tall as the lightbox */
    }
    
    .a {
     background: #eee; border: 3px solid #000;
      height: 80%; max-height: 800px; min-height: 200px;
      margin: 0 auto; 
      position: relative;
      width: 80%; min-width: 200px; max-width: 800px;
    }
    
    .aa { 
      background: lightblue;
      height: 28px; line-height: 28px; 
      text-align: center;
    }
    
    .b { 
      background: coral;
      overflow: auto;
      padding: 20px;
      position: absolute;
      top: 30px; right: 0; bottom: 0; left: 0;
    }
    

    以下是问题的演示:http://jsbin.com/urikoj/1/edit

4 个答案:

答案 0 :(得分:3)

我发现了正在发生的事情,这不是doctype,也不是需要更改的代码。

jsbin的编辑页面不支持IE8 - the exact same demo viewed in full *在IE8中正确设置样式。

在编辑模式下,jsbin在使用IE8浏览器模式和IE8文档标准的IE9中查看时,似乎应用了怪异模式或奇怪的东西。令人惊讶的是,该演示还适用于IE7浏览器模式和文档标准(quirks mode off)。

*该链接转到更高版本,但唯一的变化是从<html>标记中删除所有属性 - 我已添加这些属性进行测试。因此,没有这些属性,并且使用html5 doctype,该演示很好。

答案 1 :(得分:0)

我曾经通过以下方式解决了这个问题:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xmlns:x2="http://www.w3.org/2002/06/xhtml2">

答案 2 :(得分:0)

确保您的网页被声明为HTML5

<!DOCTYPE html>

答案 3 :(得分:-1)

IE lt; 9中垂直对齐的问题应该通过以下方法解决:

.bg {
  text-align: center;
}

.a {
  text-align: left;
}

但我不知道绝对位置出了什么问题