提高弹性布局的IE兼容性

时间:2014-04-01 11:06:32

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

我有这种弹性布局,完全按照我想要的方式在Chrome和任何主要浏览器中工作,除了忽略@media查询的IE。

http://jsfiddle.net/U2W72/17/embedded/result/

* {margin: 0px; padding 0px'}

.thumb {
    float: left;
    width:16.8%;
    margin-left: 2%;
    margin-right: 2%;
    margin-bottom: 4%;
    background: pink;
    height: 200px;
}
.thumb:nth-child(5n) {
    margin-right: 0px;
}
.thumb:nth-child(5n+1) {
    margin-left: 0px;
}
@media (max-width: 1200px) {
    .thumb, .thumb:nth-child(1n) {
        width:22%;
        margin-left: 2%;
        margin-right: 2%;
        margin-bottom: 4%;
    }
    .thumb:nth-child(4n) {
        margin-right:0;
    }
    .thumb:nth-child(4n+1) {
        margin-left:0;
    }
}
@media (max-width: 600px) {
    .thumb, .thumb:nth-child(1n) {
        width:48%;
    }
    .thumb:nth-child(2n) {
        margin-right:0;
    }
    .thumb:nth-child(2n+1) {
        margin-left:0;
    }
}
@media (max-width: 400px) {
    .thumb, .thumb:nth-child(1n) {
        width:100%;
        margin-left: 0px;
        margin-right: 0px;
    }
}

问题

虽然我很好,它的弹性方面不起作用,但它是媒体查询告诉它没有左右项目的余量,并且由于IE不读取它,它确实给它一个边距,这使得它太宽,并使第五个盒子掉到最后。

问题

如何让IE的5列布局优雅地降级,而不会将第5项放到下一行。

可能的解决方案

  • 编写仅IE的css规则,将IE中的框宽设置为16%而不是16.8%
  • 将默认布局设为16%,然后使用@media将兼容浏览器的宽度覆盖为16.8%

我愿意接受任何想法或建议。谢谢!

2 个答案:

答案 0 :(得分:0)

在头部包含元标记..

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<!--[if lt IE 9]>
    <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

答案 1 :(得分:0)

CSS中存在语法错误:

 * {margin: 0px; padding 0px'}

这会导致忽略所有CSS规则。您正在使用单引号关闭填充,删除它。

enter image description here

另外我想如果你使用display:inline-block;你会发现一个漂亮的流体网格布局。