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

Posted

技术标签:

【中文标题】如何仅为 ie7 和 8 加载 css3 pie?但不是为了 9【英文标题】:How to load css3 pie only for ie7 and 8? But not for 9 【发布时间】:2012-01-22 15:34:23 【问题描述】:

这是使用 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,那么在这种特殊情况下使用会很好。

【问题讨论】:

你不是已经问过这个了吗?我的“详细分析”还不够吗? ***.com/questions/5609651/… 哦,是的,我忘了。现在我应该删除这个吗? .但是 michielvoo 的回答对我也很有用,我也在这个问题上与 Modernizr 进行了比较。也许我应该改变标题? 您不必删除它。更改标题很好,或者如果您希望我将其作为副本关闭,也可以。 简而言之:是的,它将为 IE9 加载。但不适用于 IE10+。 MS official website: "Internet Explorer 10 标准和怪癖模式已删除对元素行为和 html 组件 (HTC) 的支持,以提高互操作性和与 HTML5 的合规性。" 【参考方案1】:

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

您提到您无法加载条件注释,但如果您可以使用条件 cmets (?),那么您可以执行以下技巧:

<!doctype html>
<!--[if IE 7]><html class="ie7"><![endif]-->
<!--[if IE 8]><html class="ie8"><![endif]-->
<!--[if gt IE 8]><!--><html><!--<![endif]-->
<head>

在这种情况下,您使用的是条件 cmets,但您没有在 cmets 中加载任何内容。您只是将一个特定于浏览器的类添加到&lt;html&gt;-元素。现在您可以在 CSS 中执行此操作:

.some-class 
  border-radius: 12px;

.ie7 .some-class, .ie8 .some-class 
  behavior: url(/PIE.htc);

【讨论】:

我说我不能在有条件的情况下加载 Modernizr,因为它不会工作。您的解决方案似乎不错。 behaviour 可以被 IE9 检测到吗? 您不能将上述示例与 IE 仿真模式结合使用(例如 &lt;meta http-equiv="X-UA-Compatible" ... /&gt; 标签)。见 cmets here。 this forum post 说“行为文件永远不会被非 IE 浏览器下载。但是,它被所有 IE 版本下载”。但是我只是在 IE11 上测试过,它没有加载 PIE,这看起来不错。 On MS official website: "Internet Explorer 10 标准和怪癖模式已删除对元素行为和 HTML 组件 (HTC) 的支持,以提高互操作性和与 HTML5 的合规性。"

以上是关于如何仅为 ie7 和 8 加载 css3 pie?但不是为了 9的主要内容,如果未能解决你的问题,请参考以下文章

CSS3 PIE:圆角减慢 IE9,即使它本机支持它们

CSS3 + HTML5SHIV + CSS3PIE Border-radius 不适用于 IE8,但适用于 IE7、9、10

Bootstrap Carousel - CSS3 PIE 打破指标循环

CSS3 和 PIE 在 IE 8 中不起作用

在 IE9 中使用 CSS3 PIE 的线性渐变不起作用,IE8 可以

是否会为其他浏览器加载 CSS3PIE .htc 文件,即使他们不需要?