我知道不应该这样做,但我现在只想快速修复,这将给我时间找到适当的解决方案。
如何使用CSS单独定位IE8,因为我尝试添加\9
,例如:
margin:100px\9;
然而,它也影响IE9,我不希望这样,因为在IE9上整个网站看起来很好。
答案 0 :(得分:18)
来自HTML5 Boilerplate,最初来自Paul Irish:
将< html> 标记更改为:
<!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->
然后IE8会将.ie8类添加到html标记中。所有其他版本的IE也是如此。然后你可以这样做:
.ie8 {
margin:100px;
}
修改:删除 no-js 类,并将 lang =“”属性更新为您的语言。谢谢,没有眼皮。
答案 1 :(得分:9)
这应该仅适用于IE9(也可能是新版本):
:root #element-id {
margin: 400px\9;
}
这是因为在IE9之前的版本中没有实现:root
伪类(参见http://msdn.microsoft.com/en-us/library/cc351024%28v=vs.85%29.aspx)。
答案 2 :(得分:3)
您可以使用root功能
:root #element { color:pink \0/IE9; } /* IE9 + IE10pp4 */
仅限IE浏览器
#element {
color:orange;
}
#element {
*color: white; /* IE6 + 7, doesn't work in IE8/9 as IE7 */
}
#element {
_color: red; /* IE6 */
}
#element {
color: green\0/IE8+9; /* IE8 + 9 + IE10pp4 */
}
:root #element { color:pink \0/IE9; } /* IE9 + IE10pp4 */
答案 3 :(得分:1)
有三种方法可以做到这一点,
IE条件评论
IE条件注释可能是最常用于修复特定版本(IE6,IE7,IE8)的IE错误。下面是一些针对不同版本的Internet Explorer的示例代码:
<!--[if IE 8]> = IE8
<!--[if lt IE 8]> = IE7 or below
<!--[if gte IE 8]> = greater than or equal to IE8
<!--[if IE 8]>
<style type="text/css">
/* css for IE 8 */
</style>
<![endif]-->
<!--[if lt IE 8]>
<link href="ie7.css" rel="stylesheet" type="text/css" />
<![endif]-->
特定于资源管理器的CSS规则(IE CSS hacks)
另一种选择是声明只能由资源管理器读取的CSS规则。例如,在CSS属性将以IE7为目标之前添加星号(*)或在属性将以IE6为目标之前添加下划线。但是,建议不要使用此方法,因为它们不是有效的CSS语法。
IE8 or below: to write CSS rules specificially to IE8 or below, add a backslash and 9 (\9) at the end before the semicolon.
IE7 or below: add an asterisk (*) before the CSS property.
IE6: add an underscore (_) before the property.
.box {
background: gray; /* standard */
background: pink\9; /* IE 8 and below */
*background: green; /* IE 7 and below */
_background: blue; /* IE 6 */
}
条件HTML类
由Paul Irish创建的第三个选项是使用IE条件注释将带有IE版本的CSS类添加到HTML标记中。基本上,它检查它是否是IE,然后在html标记中添加一个类。因此,要定位特定的IE版本,只需使用IE类作为父选择器(例如.ie6 .box)。这是一种聪明的方法,它不会导致任何验证错误。
<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]> <html class="ie7"> <![endif]-->
<!--[if IE 8 ]> <html class="ie8"> <![endif]-->
<!--[if IE 9 ]> <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html> <!--<![endif]-->