Где я помещаю файл 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.
Ответы
Ответ 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
магически присутствует в каждой папке:)