当我使用cakephp时,我在哪里放置PIE.htc文件(使IE使用CSS3)

时间:2011-08-10 03:07:09

标签: css internet-explorer css3 css3pie

我正在尝试使用PIE.htc,这是一个希望允许我在IE6-8中使用CSS3功能的脚本。我也在使用Cakephp(我正在成长为爱)

根据说明我只需将PIE.htc文件粘贴到我想要的任何位置,然后将behavior: url(path/to/PIE.htc);添加到CSS中。所以我有:

input[type=text]{
    width:348px;
    height:30px;
    border:1px solid #ddd;
    padding:3px;
    background:url(../img/formfieldbg.gif) repeat-x;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    vertical-align:top;
    behavior: url(path/to/PIE.htc);}

它还说:注意:此路径与正在查看的HTML文件相关,而不是从中调用的CSS文件。

我正在使用Cakephp,无论我为路径放置什么,无论我在哪里放置PIE.htc文件,我都无法使其工作!当我在IE6中查看它时,我的输入仍然没有像在FF中那样可爱的圆角。

4 个答案:

答案 0 :(得分:14)

尝试使用绝对路径:

behavior: url(/path/to/PIE.htc);

注意前锋斜线。这样,无论当前页面是什么,.htc文件的路径都将保持不变。

完整的网址也可以使用:

behavior: url(//example.com/path/to/PIE.htc);

如果您使用完整网址,请使用protocol relative url,以便在切换到https时不会收到不安全的内容警告。

许多元素在使用PIE时需要position:relativezoom:1才能在IE中运行,请务必检查known issues页面并进行操作,直到您开始工作为止。

答案 1 :(得分:1)

您需要指定pie.php文件。其内容如下:

<?php
/*
This file is a wrapper, for use in PHP environments, which serves PIE.htc using the
correct content-type, so that IE will recognize it as a behavior.  Simply specify the
behavior property to fetch this .php file instead of the .htc directly:

.myElement {
    [ ...css3 properties... ]
    behavior: url(PIE.php);
}

This is only necessary when the web server is not configured to serve .htc files with
the text/x-component content-type, and cannot easily be configured to do so (as is the
case with some shared hosting providers).
*/

header( 'Content-type: text/x-component' );
include( 'PIE.htc' );
?>

这应该可以解决问题。

答案 2 :(得分:1)

我正在使用CodeIgniter和 mod_rewrite 。根据Septagram的回答,我得到了以下工作

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

#if the url contains PIE.php redirect to the folder containing PIE.php
RewriteCond %{REQUEST_URI} PIE.php$
RewriteRule ^.*$ css3pie/PIE.php [NC,L]

#else just redirect to index
RewriteRule ^.*$ index.php [NC,L]

希望这有助于某人

答案 3 :(得分:0)

如果你正好使用mod_rewrite,那么下面的小黑客可能适合你:

RewriteRule /PIE.htc$ PIE.htc [L]

将此添加到.htaccess并瞧!现在PIE.htc神奇地存在于每个文件夹中:)