display:flex在IE8中不支持
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了display:flex在IE8中不支持相关的知识,希望对你有一定的参考价值。
我在IE8 browser中有一个显示问题,因为它显示我的块整行。它应该漂浮,就像它在Chrome browser中那样。需要修复什么才能在IE8中工作。
这是我的代码:`IE
</head>
<body>
<div class="grid">
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
</div>
</body>
</html>
`
和css部分是`
*, *:before, *:after {
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
font-family: Helvetica;
}
body {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
img {
max-width: 100%;
height: auto;
}
.grid {
width: 1024px;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-flow: row wrap;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
padding: 32px;
background-color: #ddd;
}
.grid:after {
content: "";
-webkit-box-flex: 1;
-webkit-flex: auto;
-ms-flex: auto;
flex: auto;
margin-left: -1%;
}
.grid .item {
-webkit-box-flex: 1;
-webkit-flex: 1 0 24.25%;
-ms-flex: 1 0 24.25%;
flex: 1 0 24.25%;
max-width: 24.25%;
margin-bottom: 10px;
text-align: center;
background-color: #bbb;
}
.grid .item:nth-child(4n+2), .grid .item:nth-child(4n+3), .grid
.item:nth-child(4n+4) {
margin-left: 1%;
}
.grid .item:nth-child(4n+1):nth-last-child(-n+4), .grid .item:nth-
child(4n+1):nth-last-child(-n+4) ~ .item {
margin-bottom: 0;
}
`
答案
我发生了因为,即-8不支持flex属性,但没有问题,我们有一个修复。
首先使用ie特定样式表作为,
<!--[if lte IE 9]>
<link rel="stylesheet" type="text/css" href="path to file/ie.css" />
<![endif]-->
然后在ie.css文件中包含跟随css,
.grid {
display:block;
margin-left:auto;
margin-right:auto;
}
.grid .item {
float:left;
width: 24.25%;
}
.clearfix:before,
.clearfix:after {
content: " ";
display: table;
}
.clearfix:after {
clear: both;
}
确保在最后一个'item'之后添加一个带有'.clearfix'类的div,比如
<div class="grid">
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="clearfix"></div>
</div>
它也适用于ie。
您的完整HTML页面将是这样的,
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style type="text/css">
*, *:before, *:after {
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
font-family: Helvetica;
}
body {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
img {
max-width: 100%;
height: auto;
}
.grid {
width: 1024px;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-flex-flow: row wrap;
-ms-flex-flow: row wrap;
flex-flow: row wrap;
padding: 32px;
background-color: #ddd;
}
.grid:after {
content: "";
-webkit-box-flex: 1;
-webkit-flex: auto;
-ms-flex: auto;
flex: auto;
margin-left: -1%;
}
.grid .item {
-webkit-box-flex: 1;
-webkit-flex: 1 0 24.25%;
-ms-flex: 1 0 24.25%;
flex: 1 0 24.25%;
max-width: 24.25%;
margin-bottom: 10px;
text-align: center;
background-color: #bbb;
}
.grid .item:nth-child(4n+2), .grid .item:nth-child(4n+3), .grid
.item:nth-child(4n+4) {
margin-left: 1%;
}
.grid .item:nth-child(4n+1):nth-last-child(-n+4), .grid .item:nth-
child(4n+1):nth-last-child(-n+4) ~ .item {
margin-bottom: 0;
}
</style>
<!--[if lte IE 9]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->
</head>
<body>
<div class="grid">
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="item">
<h3>Item</h3>
</div>
<div class="clearfix"></div>
</div>
</body>
</html>
以上是关于display:flex在IE8中不支持的主要内容,如果未能解决你的问题,请参考以下文章