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

时间:2011-12-17 14:50:46

标签: 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);

特别

behavior: url(/PIE.htc);

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

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

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

1 个答案:

答案 0 :(得分: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>

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

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