2011-08-10 10 views
12

Próbuję użyć PIE.htc, który jest skryptem, który mam nadzieję pozwoli mi używać funkcji CSS3 w IE6- 8. Używam również Cakephp (który mi się podoba)gdzie mogę umieścić plik PIE.htc (do wykonywania pracy IE z CSS3), gdy używam cakephp

Zgodnie z instrukcjami po prostu przykleiłem plik PIE.htc gdziekolwiek chcę, a następnie dodałem do CSS behavior: url(path/to/PIE.htc);. Tak mam:

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);} 

mówi również: Uwaga: ta ścieżka jest względna do pliku HTML są oglądane, a nie plik CSS jest wywoływana z.

Używam Cakephpa i bez względu na to, co umieszczę na ścieżce i nie ważne gdzie umieściłem plik PIE.htc, nie mogę sprawić, żeby działało! Kiedy przeglądam to w IE6, moje wejścia wciąż nie mają pięknych zaokrąglonych rogów jak w FF.

Odpowiedz

14

Spróbuj użyć ścieżki bezwzględnej:

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

Uwaga wiodący ukośnik. W ten sposób, bez względu na bieżącą stronę, ścieżka do pliku .htc pozostanie niezmieniona.

pełny adres URL będzie działać zbyt:

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

Jeśli używasz pełnego adresu URL, użyj protocol relative url więc nie dostać niebezpieczne treści ostrzeżenia podczas przełączania na https.

Wiele elementów wymaga position:relative lub zoom:1 podczas używania PIE, aby zachowywać się w IE. Upewnij się, że sprawdzasz stronę known issues i baw się, dopóki nie uruchomisz jej.

+0

Cześć, dzięki za odpowiedź. Próbowałem wstawić ukośnik, mam zachowanie: url (/PIE.htc); i próbowałem umieścić plik PIE.htc w aplikacji/w aplikacji/webroot w app/views etc, ale nadal nie wydaje się, aby go podnieść. Wszelkie pomysły, co może pójść nie tak? dzięki – julia

+0

Czy próbowałeś bezpośrednio przejść do adresu URL (w pasku adresu), aby upewnić się, że masz do niego dostęp? Spróbuj umieścić go w tym samym katalogu, co plik CSS, aby mieć pewność. –

+0

Tak, w pasku adresu, jeśli wpiszę w localhost/myproject/PIE.htc, pojawi się. Próbowałem teraz umieścić plik prawie wszędzie. Defo powinno działać w połączeniu z promieniem brzegu na polach wprowadzania tekstu, nie powinno. – julia

1

Musisz podać plik pie.php. Jego treść wygląda następująco:

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

To powinno rozwiązać problem.

0

Jeśli zdarzy ci się być za pomocą mod_rewrite, niż do następnego małego włamania może być dla Ciebie:

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

Dodaj to do .htaccess i voila! Teraz PIE.htc jest magicznie obecny w każdym folderze :)

1

Używałem CodeIgniter z mod_rewrite. Na podstawie odpowiedzi septagram za mam następujący pracować

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] 

nadzieję, że pomoże komuś

Powiązane problemy