CSS3 和 PIE 在 IE 8 中不起作用

Posted

技术标签:

【中文标题】CSS3 和 PIE 在 IE 8 中不起作用【英文标题】:CSS3 and PIE not working in IE 8 【发布时间】:2011-06-07 03:56:24 【问题描述】:

我正在尝试演示 CSS3PIE,但它根本无法在 IE 中运行。

html

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <link href="test.css" type="text/css" rel="stylesheet">
  <title>Test</title>
  </head>
  <body>

    <div id="title"></div>
    <div id="sub_title"></div>
    <div id="main_area">
      <div id="date_area"></div>
    </div>

  </body>
</html>

css:

body
 margin: 0 auto;


#title
 margin: 0 auto;
 width: 100%;
 height: 40px;
 background-color: white;


#sub_title
  margin: 0 auto;
  width: 100%;
  height: 25px;
  background-color: green;


#date_area
  width: 310px;
  height: 250px;
  border: 1px solid #4A4949;
  padding: 60px 0;
  text-align: center; 
  -webkit-border-radius: 1px;
  -moz-border-radius: 1px;
  border-radius: 1px;
  -webkit-box-shadow: #707070 2px 2px 4px;
  -moz-box-shadow: #707070 2px 2px 4px;
  box-shadow: #707070 2px 2px 4px;
  background: #EBEBEB;
  background: -webkit-gradient(linear, 0 0, 0 bottom, from(#EDEBEB), to(#C9C7C8));
  background: -moz-linear-gradient(#EDEBEB, #C9C7C8);
  background: linear-gradient(#EDEBEB, #C9C7C8);
  -pie-background: linear-gradient(#EDEBEB, #C9C7C8);
  behavior: url(/PIE.htc);  

结果只是一个有边框的块,没有渐变/阴影等

任何帮助/解决方案将不胜感激。

【问题讨论】:

有什么理由不使用filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#EDEBEB', endColorstr='#C9C7C8',GradientType=0 ); 【参考方案1】:

behavior 的位置应该相对于您的 HTML 文件,而不是您的 CSS,就像使用 url() 的任何其他声明一样。因此,假设您的 index.htmlPIE.htc 位于根目录中并且您的 CSS 位于“css”文件夹中,您应该这样做:

background-image: url(../images/example.jpg);
behavior: url(PIE.htc);

另外,请尝试在与PIE.htc 文件相同的位置添加具有以下内容的.htaccess 文件:

AddType text/x-component .htc

希望这会有所帮助。

【讨论】:

在 IE10 中修复了 IE8 兼容模式,但在真正的 IE8 中没有……有什么想法吗? @DrCord 哇,不知道……我不确定,因为我目前不再依赖 CSS3PIE。我支持 IE8+,我编写了一个可靠的布局结构;关于“花哨的视觉效果”:什么在 IE 上有效,在 IE 上有效,什么无效,没什么大不了的,无论如何设计看起来都不错。【参考方案2】:

尝试添加

position:relative;
z-index: 0;

这里建议http://css3pie.com/forum/viewtopic.php?f=3&t=10

此问题与此处发布的问题类似:CSS3 PIE - Giving IE border-radius support not working?

【讨论】:

^ 这家伙是救命稻草! 对我来说,添加 z-index:0 删除了元素内的文本。但是,仅添加 position:relative 确实有帮助【参考方案3】:

CSS3 PIE - Giving IE border-radius support not working?

PIE.htc 请求应以 mime 类型“text/x-component”响应 - 否则 IE 不会触及该行为。

【讨论】:

【参考方案4】:

添加:AddType text/x-component .htc - 到 .htaccess 文件对我来说就像一个魅力。

速记 CSS 属性让您可以控制圆角或不圆角。

border-radius: 0 15px 15px 0;/*(top-left, top-right, bottom-right, bottom-left). */

【讨论】:

【参考方案5】:

尝试清除浏览器中的缓存。特别是当您在兼容模式之间切换时。真的很有帮助

【讨论】:

这应该是评论而不是答案。【参考方案6】:

确保您拥有最新的测试版。如果 HTC 文件仍然导致问题,请尝试 JS 实现。

【讨论】:

以上是关于CSS3 和 PIE 在 IE 8 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

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

为啥这个 CSS3 动画在 MS Edge 或 IE11 中不起作用?

速记中的 CSS3 动画播放状态在 IE 和 Safari 中不起作用

CSS3 动画在 IE11 中不起作用,但在其他浏览器中起作用

CSS3 Animate 属性在 Chrome 中不起作用,在 Firefox/IE 中起作用

jquery animate 在 IE-7 和 IE-8 中不起作用