无法让 CSS3Pie 工作

Posted

技术标签:

【中文标题】无法让 CSS3Pie 工作【英文标题】:Can't get CSS3Pie to work 【发布时间】:2012-02-28 19:26:33 【问题描述】:

我觉得自己很愚蠢,好像我遗漏了一些非常明显的东西,但我已经检查了很多东西,但无法弄清楚哪里出了问题。我正在尝试使用 CSS3pie 在 ie8 中制作圆角,但它不会占用。

我设置了相对于 html 文档而不是 css 的路径。它在一个名为 pie 的文件夹中,所以这是我在 CSS 中使用的:

#recommended-acc 
float: left;
width: 472px;
background: url(../img/cont_bg.png) repeat;
margin: 10px;
padding: 0 10px 6px 0;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
behavior: url(pie/PIE.htc);
border-radius: 5px;
border: 1px #d8d8d8 solid;
 

有没有人知道更多关于 css3 pie 的信息,可以告诉我我缺少什么?我已经在很多不同的元素上尝试过,但一次都没奏效。

【问题讨论】:

您是否尝试过使用 pie.htc 的服务器相对路径?如果你在 IE Dev Toolbar 中查看页面,刷新后你能看到你的源码中是否有 CSS3-elements 吗? 我会留意这个(我看到你对我的问题发表了评论)。您是否有机会使用 GoDaddy 作为虚拟主机?我正在尝试向后工作,看看是否与我们的问题有任何相似之处。 【参考方案1】:

有几件事可以尝试:

在路径中使用前导正斜杠:

behavior: url(/pie/PIE.htc);

这将确保路径正确,以防您位于具有多个 URI 段的页面上,例如 http://example.com/pages/archives/mypage.html。如果没有前导正斜杠,它将是相对于 mypage.html 而不是根目录(它应该是)。

尝试通过将position:relative;zoom:1 添加到元素来强制hasLayout(模糊的IE 事物)。这通常是问题所在,正确引用了 HTC 文件,但没有它,样式将不适用。

仔细阅读known issues 页面,确保您没有遇到任何其他常见问题。

【讨论】:

【参考方案2】:

我以前也有这些问题。

您必须将 pie.htc 文件通常保存在项目文件夹的根目录中。

我知道下面的解决方案有点奇怪,但你可以试试

尝试在 pie.htc 文件中添加警报或控制台,并将文件放在每个文件夹中,直到它被渲染。

【讨论】:

您可以将 PIE.htc 文件保存在您想要的任何位置,它不必在根目录中。【参考方案3】:

如何确保您的 HTC 文件加载..

    <script type="text/javascript">下面放alert("test"); 当文件加载时这个警报测试 在你的css文件中输入完整的urlbehavior: url("http://www.yourwebsite.com/test/PIE.htc"); 当您加载页面时,会显示警报:) 这意味着您确定文件已加载:) 现在缩短 behavior: url("relative to the CSS-FILE/PIE.htc"); 并确保您仍然收到警报 删除警报 =)

您现在 100% 确定它正在使用 HTC 文件

【讨论】:

【参考方案4】:

我为此苦苦挣扎,我只能建议尝试一下。 使用带有 jQ​​uery 的 Javascript 版本

    <!--[if lt IE 9]>
          <script type="text/javascript" src="js/PIE_IE678.js"></script>
        <![endif]-->
        <!--[if IE 9]>
          <script type="text/javascript" src="js/PIE_IE9.js"></script>
        <![endif]-->

  <!--[if IE]>
            <link rel="stylesheet" type="text/css" href="css/ie.css"/>
            <script>
               $(function() 
                if (window.PIE) 
                    $('.Circle').each(function() 
                        PIE.attach(this);

                      //  alert("Attached");
                    );
                
            );
            </script>

           <![endif]-->

现在在您的 CSS 中,使用 .Circle 类或任何使用 CSS 3 的类,给它们:

缩放:1; 位置:相对;

我在使用 jQuery 和迁移插件时发现的另一个注意事项 - 这些工作有些“挑剔”。

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

如果运气好的话,就可以了。

【讨论】:

【参考方案5】:

伙计们,我找到了你要找的问题。 首先,我使用了 2 个不同的网络主机。我自己的 1 个和公司的 1 个。

我在自己的网站上手工编写了完整的 css3 响应式网页设计。我需要 PIE.htc 文件才能使圆角适用于所有 IE 版本,我成功了!

但是,当我将相同的文件上传到我公司的网络主机时,它不再工作了。 事实证明,它们不支持 .htc 文件。 所以我挠了挠头,也没有弄好,但后来我发现这个提供程序可以与 PIE.php 文件一起使用。

所以如果对你来说这不起作用;

.bg 
    border-radius:60px;
    width: 80%;
    height: 85%;
    position: fixed;
    top: 10.2%;
    left: 18%;
    z-index: 1;
    border:3px solid #fff; 
    background:#fff;
    behavior: url(pie/PIE.htc);

比这个还;

.bg 
    border-radius:60px;
    width: 80%;
    height: 85%;
    position: fixed;
    top: 10.2%;
    left: 18%;
    z-index: 1;
    border:3px solid #fff; 
    background:#fff;
    behavior: url(pie/PIE.php);

只需将 PIE.htc 更改为 PIE.php 即可。

【讨论】:

以上是关于无法让 CSS3Pie 工作的主要内容,如果未能解决你的问题,请参考以下文章

css3pie 是如何工作的?

CSS3Pie 导致启动错误

css3pie:CSS 行为属性是不是允许相对 URL?

CSS3 Pie 在 IE8 中不起作用

CSS XBrowser边界半径(CSS3PIE)

MVC中的css3pie,pie.htc文件放在哪里?