我有一个继承的项目,有些地方一团糟。这是其中之一。我只需要针对 IE(任何版本),无需更改 HTML,也不需要 JavaScript 或除 CSS 之外的任何其他技术。
#nav li {
float: left;
height: 54px;
background: #4f5151;
display: table;
border-left: 1px solid grey;
}
要明确的是:在嵌入样式表内并且不向html中的标签添加ID或类,我需要仅在用户使用IE时应用边框样式。我该怎么做?
编辑:找到了 Firefox 的解决方案,编辑问题以反映这一点。
Internet Explorer 9 及更低版本: 您可以使用条件注释为您想要专门针对的任何版本(或版本组合)加载特定于 IE 的样式表,如下所示使用外部样式表。
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->
但是,从版本 10 开始,IE 中不再支持条件注释。
Internet Explorer 10 和 11 : 使用 -ms-high-contrast 创建媒体查询,在其中放置 IE 10 和 11 特定的 CSS 样式。由于 -ms-high-contrast 是 Microsoft 特定的(并且仅在 IE 10+ 中可用),因此它只会在 Internet Explorer 10 及更高版本中进行解析。
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
/* IE10+ CSS styles go here */
}
Microsoft Edge 12:可以使用@supports规则 这里是有关此规则的所有信息的链接
@supports (-ms-accelerator:true) {
/* IE Edge 12+ CSS styles go here */
}
内联规则IE8检测
我还有1个选项,但它只能检测IE8及以下版本。
/* For IE css hack */
margin-top: 10px\9 /* apply to all ie from 8 and below */
*margin-top:10px; /* apply to ie 7 and below */
_margin-top:10px; /* apply to ie 6 and below */
正如您为嵌入样式表指定的那样。我认为您需要对以下版本使用媒体查询和条件评论。
@media screen\9
@import ie_styles
@media screen\0
@import ie_styles
https://keithclark.co.uk/articles/moving-ie-specific-css-into-media-blocks/
我还使用@supports
来定位更高版本的 Edge(根据需要添加任意数量)
@supports (-ms-ime-align:auto)
@import ie_styles
@supports (-ms-accelerator:auto)
@import ie_styles
https://jeffclayton.wordpress.com/2015/04/07/css-hacks-for-windows-10-and-spartan-browser-preview/
@mixin ie-only {
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
@content;
}
}
https://browserstrangeness.github.io/css_hacks.html
这是一个疯狂、奇怪的媒体查询,但这些在 Sass 中更容易使用:
@media screen and (min-width:0\0) and (min-resolution:+72dpi), \0screen\,screen\9 {
.selector { rule: value };
}
这适用于 IE8 以外的 IE 版本。
或者您可以使用:
@media screen\0 {
.selector { rule: value };
}
它针对 IE8-11,但也会触发 FireFox 1.x(对于我的用例而言,这并不重要)。
现在我正在测试打印支持,这似乎工作正常:
@media all\0 {
.selector { rule: value };
}
<html data-useragent="Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)">
然后是你的选择器
html[data-useragent*='MSIE 10.0'] body .my-class{
margin-left: -0.4em;
}