Internet Explorer 10不对内联元素应用flexbox

sti*_*ife 2 html css internet-explorer inline flexbox

根据flexbox规范,应该将span flex项(flex容器的子项)转换为display:block.Internet Explorer 10不应用此转换,因此flexbox不适用于span(内联)元素.

这里codepen的我是什么意思

我可以使用div但我想知道这是否是一个资源管理器错误,如果有一个更好的解决方案,而不是更改HTML代码.

dho*_*ert 5

这只是因为IE10发布后,(工作草案)flexbox规范发生了变化.

这是CSS Flexbox工作草案中相关的spec文本块,因为IE10在2012年底发布时存在:

弹性布局算法对弹性项生成的框进行操作.以下每个都成为flex项:

[...]
Run Code Online (Sandbox Code Playgroud)

一个匿名块,包裹着一系列连续的非替换内联子元素.

资料来源:http://www.w3.org/TR/2012/WD-css3-flexbox-20120612/#flex-items

A span是"未替换的内联子元素".所以IE10将span(和任何相邻的内联内容)包装在匿名块中(与旧规范相匹配),而不是将其转换块(根据新规范).

我怀疑微软不希望在发布后更改此功能,以避免破坏已经编码的内容以期望IE10中的特定行为.

所以,如果你想写Flexbox的内容的作品在IE10 更新的浏览器版本,它可能是最好不要依赖于这种特殊的行为.(要明确;将这些跨度更改为div,或者给它们display:block,因为你知道它们无论如何都会转换为新浏览器中的块.)