2011-08-10 12 views
12

Sto provando a usare PIE.htc, che è uno script che mi consentirà di usare le funzionalità CSS3 in IE6- 8. Sto anche usando Cakephp (che sto crescendo ad amare)dove inserisco il file PIE.htc (per far funzionare IE con CSS3) quando sto usando cakephp

Secondo le istruzioni, inserisco il file PIE.htc ovunque io voglia e poi aggiungo behavior: url(path/to/PIE.htc); al CSS. Così ho:

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

Si dice anche: Nota: questo percorso è relativo al file HTML di essere visualizzato, non il file CSS è chiamato da.

Sto usando Cakephp e non importa cosa ho messo per il percorso e non importa dove metto il file PIE.htc non riesco a farlo funzionare! Quando lo guardo in IE6 i miei input non hanno ancora le deliziose curve arrotondate come fanno in FF.

risposta

14

Provare a utilizzare un percorso assoluto:

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

Nota leader slash. In questo modo, indipendentemente dalla pagina corrente, il percorso del file .htc rimarrà invariato.

un URL completo lavorerà anche:

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

Se si utilizza un URL completo, utilizzare un protocol relative url in modo da non avere avvertimenti contenuti non protetti quando si passa a https.

Un sacco di elementi bisogno position:relative o zoom:1 quando si utilizza PIE al fine di comportarsi in IE, assicuratevi di controllare la pagina di known issues e giocare fino ad arrivare a farlo funzionare.

+0

Ciao, grazie per la risposta. Ho provato a mettere una barra in avanti, quello che ho è il comportamento: url (/PIE.htc); e ho provato a inserire il file PIE.htc in app/in app/webroot in app/views, ma ancora non sembra che lo stia raccogliendo. Qualche idea su cosa potrebbe andare storto? grazie – julia

+0

Hai provato a navigare direttamente nell'URL (nella barra degli indirizzi) per assicurarti di poter accedervi? Prova a metterlo nella stessa directory del tuo file CSS per essere sicuro. –

+0

Sì nella barra degli indirizzi se si digita localhost/myproject/PIE.htc appare. Ho provato a mettere il file quasi ovunque ora. Dovrebbe funzionare con con il bordo-raggio sui campi di input del testo non dovrebbe farlo. – julia

1

È necessario specificare il file pie.php. Il suo contenuto è come segue:

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

Questo dovrebbe risolvere il problema.

0

Se vi capita di essere utilizzando mod_rewrite, oltre il successivo piccolo hack potrebbe essere per voi:

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

Aggiungi questo al .htaccess e voilà! Ora PIE.htc è magicamente presente in ogni cartella :)

1

Stavo usando CodeIgniter con un mod_rewrite. Sulla base di risposta di Septagram ho ottenuto le seguenti funzioni

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] 

Spero che questo aiuti qualcuno

Problemi correlati