2011-08-10 4 views
12

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

ответ

14

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

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

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

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

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

Если вы используете полный URL, используйте protocol relative url, так что вы не получите предупреждение о небезопасном содержании при переключении на протокол HTTPS.

Для использования PIE необходимо использовать position:relative или zoom:1, если вы используете PIE, убедитесь, что вы проверили страницу known issues и поиграли, пока не получите ее на работу.

+0

Привета, спасибо за ответ. Я попытался поставить косую черту, что у меня есть поведение: url (/PIE.htc); и я попытался поместить файл PIE.htc в app/webroot в app/views и т. д., но все же он, похоже, не подбирает его. Любые идеи, что может пойти не так? спасибо – julia

+0

Вы пробовали напрямую перейти к URL-адресу (в адресной строке), чтобы убедиться, что вы можете получить к нему доступ? Попробуйте поместить его в тот же каталог, что и ваш CSS-файл. –

+0

Да, в адресной строке, если я набираю localhost/myproject/PIE.htc, появляется. Я попытался поместить файл почти везде. Это defo должно работать с граничным радиусом на поля ввода текста, не так ли. – julia

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'); 
?> 

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

0

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

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

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

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] 

Надеется, что это помогает кому-то

 Смежные вопросы

  • Нет связанных вопросов^_^