CSS3 Pie在IE8中不起作用

L84*_*L84 5 css3 internet-explorer-8 css3pie

更新 这似乎是backgroundIE8中的一个问题.CSS3 PIE似乎正常工作,但是当我有背景时它没有显示.如果我完全删除背景css,它会再次显示.IE:

html, body{ 
  background: /*CSS */; /* Remove this property */
}
Run Code Online (Sandbox Code Playgroud)

现在的问题变成了我如何才能CSS3 PIE正确的IE 8的工作一个背景是什么?

这是一个带有上述代码的jsFiddle.


原始问题


我试图使用CSS3 Pie JS Edition在IE 8中复制一下.这是我想要的样子:

正确的看

以下是使用CSS3 PIE在IE 8中的显示方式:

IE 8截图

正如你所看到的,当我实现CSS3 PIE时,盒子就会消失!我之前没有使用过CSS3 PIE,也不知道出了什么问题.这是我正在使用的代码:

注意:我使用的是JS版(我使用的是托管的CMS,没有服务器端访问权限,因此无法使用该.htc文件.)

这是我调用CSS3 Pie的代码:

<!--[if lt IE 10]>
  <script type="text/javascript" src="/js/PIE.js"></script>
  <script type="text/javascript">
    $(function() {
       if (window.PIE) {
         $('.surround').each(function() {
           PIE.attach(this);
          });
         }
       });
  </script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)

这是HTML和CSS:

<div class="row surround">
<div class="twelvecol">
 <p>Lorem Ipsum</p>
</div>
</div>

.surround
 {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -o-box-sizing: border-box;
  box-sizing: border-box; 
  padding: 25px;
  background:#f5f2f7;
  border: 5px solid #b30005;
  -webkit-box-shadow: 0 5px 10px rgba(0,0,0,0.4);
  -moz-box-shadow: 0 5px 10px rgba(0,0,0,0.4);
  -o-box-shadow: 0 5px 10px rgba(0,0,0,0.4);
  box-shadow: 0 5px 10px rgba(0,0,0,0.4);
  -webkit-border-radius:25px;
  -moz-border-radius: 25px;
  -o-border-radius: 25px;
  border-radius:25px;
  border-top: solid #b30005 25px;
 }
Run Code Online (Sandbox Code Playgroud)

L84*_*L84 18

正如@Spudley在上面的评论中提到的那样,问题是CSS3 PIE网站上描述的z-index问题:

消失的背景/边框/阴影(z-index问题)

首先,关于PIE如何呈现CSS3装饰的一些背景知识:创建了一个包含所有VML对象的单个元素.此容器元素作为前一个兄弟插入到目标元素,并且绝对位于相同的坐标处.如果目标元素是position:absolute或position:relative,那么css3-container元素被赋予与目标元素相同的z-index,并且由于它是DOM树中的前一个兄弟,它被显示在后面,没有可能任何其他元素潜入其中.

但是,当target元素为position:static时,这不能很好地工作,因为静态元素不参与z-index堆叠.使我们的位置唯一的方法:绝对css3元素落后于它给它z-index:-1.不幸的是,这有一个不好的副作用:css3元素不仅会落后于目标元素,它还会落后于任何祖先元素的背景,这些元素本身就是位置:静态.这导致PIE正确创建VML渲染的情况,但它消失在父元素的背景后面.

我知道解决这个问题的唯一方法是:

     make the target element position:relative, or
     make the ancestor element position:relative and give it a z-index.
Run Code Online (Sandbox Code Playgroud)

这两种解决方法都可能在子元素定位和z索引堆叠方面产生潜在的不良副作用.PIE很容易强迫一个人或另一个人,但是:

根据具体情况,一个或另一个可能更合适,因此CSS作者需要能够控制选择哪一个.强制位置:CSS之外的相对位置会使IE与其他浏览器不同步,从而导致混淆不一致.

因此,PIE既不做,也应由作者在必要时实施任何一种解决方法.在大多数情况下,只需添加位置:相对于目标元素就可以了.

解决方案可能会导致其他问题.我最后问自己创造圆角是否值得麻烦?对于某些网站,是的,对于其他网站来说,它是您的选择.