您的当前位置:首页正文

ie 8 图片垂直居中,父容器被撑开问题

来源:华拓网

前天碰到了这么个诡异的事情,现在也是搞不明白为什么会有这种情况,但是问题是解决了。

问题:IE8 里实现不固定宽高图片垂直居中,父容器被撑开。

看到这个问题,应该有写小伙伴还是搞不明白是怎么个回事。先来看看这个例子:

<!DOCTYPE html><html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>ie8图片垂直居中父级被撑开问题</title>
        <style>
            div{ 
                width: 200px;
                height: 200px; 
                border:1px solid black;
                float: left;
                margin-left: 200px;
            }       
            a{           
                width: 200px;
                height: 200px;
                display: table-cell;
                vertical-align: middle;
                text-align: center;
                border:1px dashed red;
            }
            img{
                max-width: 200px;
                max-height: 200px;
                vertical-align: middle;
                border:none;
            }    
            </style>
    </head>
<body>
    <!--图片有问题-->
    <div>
        <a href="#">
            <img src="pic2.jpg" alt="">
        </a>
    </div>
    <!-- 图片有问题-->
    <div>
        <a href="#">
            <img src="pic3.jpg" alt="">
        </a>
    </div>
    <!-- 图片没问题-->
    <div>
        <a href="#">
            <img src="pic4.jpg" alt="">
        </a>
    </div>
</body>
</html>

ps:其他的浏览器基本运行正常,这里主要说ie8中出现的这个问题


ie8运行结果

不知道你是否也遇到上面的问题。
开始的时候,我的解决方案是给图片加个100%的宽度,

img{
    width: 100%;
    max-height: 200px;
    vertical-align: middle;
    border:none;
  }    
img加了width:100%的运行结果

是不是高兴了一下,解决了?哈哈,细心的小伙伴就会看到,图片宽度没有和父容器一样宽的图片也被拉宽了,这样图片的比例就失调了,看第三张。

div{
    /*加上这个就可解决*/
    display: table;
    table-layout: fixed; 
   /*/////////*/
    width: 200px; 
   height: 200px;
    border:1px solid black;
    float: left;
    margin-left: 200px;
}
最终解决运行结果

好了,头疼的问题解决了,这种解决的方案就类似于表格的垂直居中了。

如果你还有别的解决方案,记得留下足迹哦...