Html flex属性在IE中不起作用
我一直无法确定为什么flexbox不能在IE 11中工作 为了进行测试,我从CodePen获得了一个非常简单的flexbox布局,并粘贴了下面的信息 Chrome按预期工作;IE11失败了 在Chrome上成功运行布局的图像: IE11上布局失败的图像Html flex属性在IE中不起作用,html,css,flexbox,internet-explorer-11,Html,Css,Flexbox,Internet Explorer 11,我一直无法确定为什么flexbox不能在IE 11中工作 为了进行测试,我从CodePen获得了一个非常简单的flexbox布局,并粘贴了下面的信息 Chrome按预期工作;IE11失败了 在Chrome上成功运行布局的图像: IE11上布局失败的图像 正文{ 背景:#333; 字体系列:helvetica; 字体大小:粗体; 字体大小:1.7rem; } 保险商实验室{ 列表样式:无; } 李{ 背景:火红; 高度:200px; 文本对齐:居中; 边框:2个实心贝壳; 颜色:贝壳; 利润
正文{
背景:#333;
字体系列:helvetica;
字体大小:粗体;
字体大小:1.7rem;
}
保险商实验室{
列表样式:无;
}
李{
背景:火红;
高度:200px;
文本对齐:居中;
边框:2个实心贝壳;
颜色:贝壳;
利润率:10px;
flex:自动;
最小宽度:120px;
最大宽度:180像素;
}
.flex{
显示器:flex;
调整内容:灵活启动;
柔性包装:包装;
}
- 一,
- 二,
- 三,
- 四,
- 五,
- 六,
- 七,
- 八,
- 九,
- 十,
IE在解析flex
属性时遇到问题
以下是一些对我有效的变通方法:
- 使用长手属性而不是速记属性。
而不是像这样:
试试这个:flex:035%
flex-grow:0
flex-shrink:0
- 弹性基准:35%
- 确保启用了弹性收缩功能。
因此,与此相反:
试试这个:flex:035%
(在其他情况下,需要禁用弹性收缩:)flex:0 1 35%
- 使用弹性基础小心百分比和无单位值
这可能取决于您的IE11版本。行为似乎有所不同
试试这些变化:
flex:110
flex:1 10px
flex:10%
0
替换0px
,这对调试来说是一件非常烦人的事情(但是,出于某种原因,它们不会改变0%
)
详情如下:
- 代替
使用flex:1
(或添加flex:auto
) 如果您在flex-basis:auto
中使用flex-direction:row
(例如在更大的屏幕上),并且在媒体查询中切换到flex:1
(比方说对于移动设备),您可能会发现您的flex项折叠了 在媒体查询中,添加flex-direction:column
。这将覆盖flex-basis:auto
规则中的flex:1
值(通常为flex-basis
、0
或0px
,具体取决于浏览器) 使用0%
也应该可以工作,它是:flex:auto
flex-grow:1
flex-shrink:1
flex-basis:auto
- 使用旧式的
/宽度
属性,而不是高度
弹性
- 使用
布局而不是block
布局。 您不需要完全放弃flex布局。但是对于特定的容器,您可以使用flex
而不是display:block
例如,在需要使用将视频响应性地嵌入到flex项目中时,我面临的障碍是 为了使其正常工作,我从以下位置切换flex项上的display:flex;弹性方向:列
值:显示
为此:/* a flex item, also a nested flex container */ #footer-container > article { display: flex; flex-direction: column; }
#footer-container > article { display: block; }
- 对于我,使用
flex: 1 1 auto;
而不是
flex: 1;
解决了IE 11上的flex问题。只需使用
flex:10自动代码>。它将起作用。如@Michael_B answer中所述,使用Flexboxflex
属性限制增长:flex:01(1/n-B)
采用%值,其中n
是一行中的flex项的数量,B
是您希望在IE中看到的flex项之间的差距
在flex项上以及上面的flex
属性使用max width
属性,百分比值为1/n-b
在您的情况下,flex项的通用CSS是:
li {
// ... the remaining code from your snippet
// Calculate the following manually and insert or use CSS preprocessor that does math for you.
// See the formula explanation above.
max-width: (your flex container max-width / 2) * 100% - b;
flex: 0 1 (your flex container max-width / 2) * 100% - b;
}
在实际情况下,每行5个项目将有(1/5)*100%-1%=19%
=>最大宽度:19%
和弹性:0 1 19%代码>
使用b
参数使flex项目足够短,以允许flex:wrap代码>工作。在我的例子中,CSS缩略器拒绝了-ms flex
速记规则中最后一个参数的px
单元,我尝试使用%
单元,它工作得很好。好,这就是用flex:auto
代替flex:auto
的意思,正如flex:auto
翻译成的那样,flex:11 auto
这个答案是金色的!:D谢谢你,马恩!这个答案值得起立鼓掌你好!你知道有一种polyfill可以将flex从速记转换为速记吗?从速记转换为多行定义是适合我的情况的。