如何仅为ie7和8加载css3饼?但不是9

Jit*_*yas 2 css internet-explorer cross-browser modernizr css3pie

这是使用CSS3 PIE的CSS

border: 1px solid #696;
padding: 60px 0;
text-align: center; width: 200px;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
background: #EEFF99;
behavior: url(/PIE.htc);
Run Code Online (Sandbox Code Playgroud)

特别

behavior: url(/PIE.htc);
Run Code Online (Sandbox Code Playgroud)

我的问题是这个PIE.htc是由所有浏览器下载还是仅在IE 7和8中下载?

我需要在IE7和8中显示圆角.因此我认为不是使用Modernizr而是为圆角编写另一个类和图像,CSS3 PIE将是很好的解决方案,因为无论何时我们将改变边框的颜色和厚度以及元素PIE.htc的高度将在IE7和8中呈现相同.但在Modernizr和图像的情况下,我们将不得不使用上传新图像,我们将不得不更改和上传新的更改.

而且因为我正在使用Modernizr,所以我无法加载条件注释,它将为每个浏览器加载,即使我不需要.所以我认为如果CSS3 PIE有利于灵活性,如果它只加载到IE7和8,那么在这种特殊情况下使用它会很好.

Mic*_*out 9

behavior不是有效的CSS属性,Internet Explorer以外的浏览器将忽略它.他们不会下载PIE.htc文件.

你提到你不能加载条件注释,但如果你可以使用条件注释(?),那么你可以做以下技巧:

<!doctype html>
<!--[if IE 7]><html class="ie7"><![endif]-->
<!--[if IE 8]><html class="ie8"><![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->
<head>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您使用条件注释,但您没有在注释中加载任何内容.您只是在<html>-element中添加特定于浏览器的类.现在你可以在CSS中执行此操作:

.some-class {
  border-radius: 12px;
}
.ie7 .some-class, .ie8 .some-class {
  behavior: url(/PIE.htc);
}
Run Code Online (Sandbox Code Playgroud)