куда я помещаю файл PIE.htc (для работы IE с CSS3), когда я использую cakephp - PullRequest
12 голосов
/ 10 августа 2011

Я пытаюсь использовать PIE.htc , который является сценарием, который, я надеюсь, позволит мне использовать функции CSS3 в IE6-8. Я также использую 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 ]

14 голосов
/ 10 августа 2011

Попробуйте использовать абсолютный путь:

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

Обратите внимание на переднюю косую черту. Таким образом, независимо от текущей страницы, путь к файлу .htc останется прежним.

Полный URL тоже будет работать:

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

Если вы используете полный URL-адрес, используйте относительный URL-адрес протокола , чтобы при переходе на https не получать предупреждения о небезопасном содержимом.

Многие элементы нуждаются в position:relative или zoom:1 при использовании PIE для работы в IE. Обязательно проверьте страницу известные проблемы и поиграйтесь, пока она не заработает. 1018 *

1 голос
/ 13 сентября 2013

Я использовал CodeIgniter с mod_rewrite . Основываясь на ответе Септаграммы, я получил следующее для работы

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]

Надеюсь, это кому-нибудь поможет

1 голос
/ 20 апреля 2012

Вам необходимо указать файл 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' );
?>

Это должно решить проблему.

0 голосов
/ 13 октября 2012

Если вы используете mod_rewrite, тогда вам может пригодиться следующий небольшой взлом:

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

Добавьте это к .htaccess и вуаля! Теперь PIE.htc волшебно присутствует в каждой папке:)

...