嵌套DIV缩小为内容

时间:2012-08-24 16:36:03

标签: html css internet-explorer

我正在尝试使用一种已知方法使我的DIV水平居中于另一个DIV内部,而不知道嵌套DIV上的内部DIV宽度(缩小到内容方法)。

以下是HTML:

<div class="my-container">
    <div class="my-wrapper">
        <div class="item">
            <span>My Item</span>
        </div>
    </div>
</div>

这是CSS:

div.my-container {
    width: 300px;
    height: 100px;
    padding: 100px 0 0 0;
    border: 1px solid #000;
}

div.my-wrapper {
    background-color: blue;
    text-align: center;
}

div.item {
    display: inline-block;
    padding: 0 20px;
    background-color: pink;
}

div.item span {
    display: inline-block;
    height: 50px;
    background-color: red;
}

关于jsFiddle的测试用例: http://jsfiddle.net/ThZxx/2/

在所有浏览器中看起来都很好:

除了Internet Explorer 7:

看起来粉红色的DIV (div.item)并没有收缩到内容并占用父容器中的所有可用空间。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

IE7存在问题,因为它不支持display: inline-block。您必须为IE添加条件样式,将其更改为display: inline

<!--[if IE 7]>
div.item { display: inline; }
<![endif]-->

答案 1 :(得分:1)

将div.item更改为:

div.item {
    display: inline-block;
    padding: 0 20px;
    background-color: pink;
    *display: inline;
    zoom: 1;
}

在额外显示样式前添加*可防止其他浏览器使用该样式。只有IE会解析并应用它。

答案 2 :(得分:1)

IE7不能正确理解内联块,但是通过添加zoom来修复它是一个简单的方法:1;和*显示:内联;对你的css,像这样:

div.item {
    display: inline-block;
    padding: 0 20px;
    background-color: pink;
    zoom:1;
    *display: inline;
}

您可以阅读有关该问题的更多信息,以及此处的修复: http://flipc.blogspot.ca/2009/02/damn-ie7-and-inline-block.html