如果我在HTML中使用自定义或不受支持的元素,它们仍然可以设置样式,浏览器将呈现它们.
例如,mainInternet Explorer 11及更早版本(源)不支持HTML5 元素.何时main由IE呈现,CSS规则涉及margin并被overflow忽略.这意味着display无法识别的元素的值是inline.
定义了无法识别的元素的初始设置在哪里?
(注意:我不是在询问使用自定义元素的优缺点.我只是想知道CSS默认做什么.)
.foo bar:last-of-type {
background-color: red;
}Run Code Online (Sandbox Code Playgroud)
<div class="foo">
<bar>bar</bar>
<bar>bar</bar>
<bar>bar</bar>
<span>span</span>
</div>
<div class="foo">
<bar>bar</bar>
<bar>bar</bar>
<bar>bar</bar>
<baz>baz</baz>
</div>Run Code Online (Sandbox Code Playgroud)
bar在Chrome和Firefox中,两种情况下的最后一个都显示为红色。但是,在IE11和Edge中,它在第二种情况下不起作用。这是怎么回事?
我已经尝试了几乎所有我可以通过谷歌搜索找到的解决方案.
这些包括设置max-width为100%,将父元素设置为displayas block或flex,设置white-space为normal和播放,overflow但在我的情况下似乎没有任何效果.
无论如何,这应该是它应该是什么样子(实际上在IE 11,Firefox和Chrome中看起来像):

在IE 10上它看起来像这样:
.
body {
padding: 0;
margin: 0;
}
html {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*,
*:before,
*:after {
-webkit-box-sizing: inherit;
-moz-box-sizing: inherit;
box-sizing: inherit;
}
.flexContainer {
display: -webkit-box;
display: -moz-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-direction: normal;
-webkit-box-orient: horizontal;
-moz-box-direction: normal;
-moz-box-orient: horizontal;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap; …Run Code Online (Sandbox Code Playgroud)