Подтвердить что ты не робот

Где я помещаю файл PIE.htc(для того, чтобы IE работал с CSS3), когда я использую cakephp

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

4b9b3361

Ответ 1

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

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, убедитесь, что вы проверяете известные проблемы и поиграйте, пока не приступите к работе.

Ответ 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

Я использовал 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]

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

Ответ 4

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

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

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