当我使用 cakephp 时,我在哪里放置 PIE.htc 文件(用于使 IE 与 CSS3 一起工作)

Posted

技术标签:

【中文标题】当我使用 cakephp 时,我在哪里放置 PIE.htc 文件(用于使 IE 与 CSS3 一起工作)【英文标题】:where do I put the PIE.htc file (for making IE work with CSS3) when I'm using cakephp 【发布时间】:2011-10-23 17:49:22 【问题描述】:

我正在尝试使用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 中那样可爱的圆角。

【问题讨论】:

【参考方案1】:

尝试使用绝对路径:

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

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

完整的 URL 也可以:

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

如果您确实使用了完整的网址,请使用protocol relative url,这样您在切换到 https 时就不会收到不安全的内容警告。

在使用 PIE 时,很多元素需要 position:relativezoom:1 才能在 IE 中运行,请确保检查 known issues 页面并玩转直到你让它工作。

【讨论】:

您好,感谢您的回答。我尝试使用正斜杠,我所拥有的是行为:url(/PIE.htc);我已经尝试将 PIE.htc 文件放在 app/ 中的 app/webroot 中的 app/views 等中,但它似乎仍然没有收到它。有什么想法可能会出错吗?谢谢 您是否尝试过直接导航到 url(在地址栏中)以确保您可以访问它?尝试将其放在与 CSS 文件相同的目录中以确保。 是的,如果我在地址栏中输入 localhost/myproject/PIE.htc 它就会出现。我已经尝试将文件放在几乎所有地方。它应该与文本输入字段上的边框半径一起使用,不应该。 behavior: url(/PIE.htc);behavior: url(/myproject/PIE.htc); 应该适合你(取决于你的项目的根目录实际在哪里)。它应该在输入上工作,但为了确保它正在加载,我建议从 PIE 主页上的示例中复制/粘贴 HTML/CSS,直到你看到它工作为止。如果您正在使用AddType text/x-component .htc,您可能还需要将AddType text/x-component .htc 添加到您的.htaccess 中。 您好,非常感谢您的帮助。我尝试在新页面上进行测试,而不是使用输入,而只是使用普通的 div,我发现当我有行为时: url(/myproject/PIE.htc);它有效果。但不幸的是,效果是完全删除了边框 - 输入文本框完全消失了?!?但至少它必须选择 htc 文件,因为它有一些效果。我想我的其他 css 一定有问题导致奇怪的行为?朱莉娅【参考方案2】:

您需要指定 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' );
?>

这应该可以解决问题。

【讨论】:

【参考方案3】:

我正在使用带有 mod_rewrite 的 CodeIgniter。根据 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]

希望这对某人有所帮助

【讨论】:

【参考方案4】:

如果您碰巧使用mod_rewrite,那么以下小技巧可能适合您:

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

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

【讨论】:

以上是关于当我使用 cakephp 时,我在哪里放置 PIE.htc 文件(用于使 IE 与 CSS3 一起工作)的主要内容,如果未能解决你的问题,请参考以下文章

标题卡在导航栏中。我需要在哪里放置 clearfix?

在哪里放置根控制器?

上传文件时,我在哪里放置 Spinner 代码?

如何使用 CakePHP 电子邮件组件?

我在哪里放置与我的项目相关的 conda-recipe?

我在哪里放置一个代码,当提交表单时,它将重定向到另一个页面? [复制]