*css黑客不再在ie8工作?

Har*_*ldo 1 html css

好的,所以我想让我的边框css仅适用于ie8或更早版本(因为它出来时不是ie9).

目的:这样,即缺失的阴影将被边框替换:

*黑客似乎没有工作?我在ie8本地测试......

input, textarea{
display:block;
border:none;
*border: 1px solid #000;
-moz-box-shadow: 0px 0px 1px 1px #999;
-webkit-box-shadow: 0px 0px 1px 1px #999;
box-shadow: 0px 0px 1px 1px #999;

-moz-border-radius: 2px;
-webkit-border-radius: 2px; 
margin: 1px 0px 10px 0px;
font-size:12px;
color:#494949;
}
Run Code Online (Sandbox Code Playgroud)

Res*_*uum 12

不要使用CSS黑客,而是使用条件注释来定位IE版本.

  • +1.绝对是正确的答案.旁注:不要盲目检查IE,因为标准支持越来越好.而是目标*特定*IE版本或使用*lt*运算符以避免捕获未来版本. (6认同)

Jør*_*ode 5

添加到Residuum的答案,这是您需要引用"pre IE 9"样式表所需的代码:

<!--[if lt IE 9]>
<link href="ie-pre-9.css" rel="stylesheet" type="text/css" />
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

第一行中的表达式指出注释中的标记应该在版本号小于(lt)9的所有Internet Explorer版本上进行评估.在非Microsoft浏览器上,代码将被视为注释 - 即它将是忽略,并且不包括额外的样式表.

如果您不想为Internet Explorer修复程序创建其他样式表,则可以使用条件注释来打开/关闭整个页面内容的容器,并使用此容器的存在来打开/关闭修复程序.例:

<!--[if lt IE 9]><div class="ie"><![endif]-->
Page content here...
<!--[if lt IE 9]></div><![endif]-->
Run Code Online (Sandbox Code Playgroud)

在主CSS文件中,您现在可以为任何选择器添加前缀.ie,使其仅定位版本号小于9的Internet Explorer:

a { color: red; }
.ie a { color: blue; }
Run Code Online (Sandbox Code Playgroud)