Esperienze nel mondo di Joomla e dei CMS
| Applicare effetto ombra al testo con IE |
|
|
|
| Giovedì 10 Marzo 2011 16:55 |
|
Già lo sappiamo che IE ci da non pochi problemi nella realizzazione di un template per Joomla visto che non "digerisce" molte delle specifiche degli Style Sheet. Dopo vane e ardue ricerche in rete ho trovato alcune soluzioni ma nessuna che si avvicinasse all'effetto ombra che si vedeva con Firefox. Teoricamente avrei potuto usare i filtri che mamma Microsoft mette a disposizione, ovvero: filter:progid:DXImageTransform.Microsoft.Shadow(sProperties) solo che l'effetto sul font era pessimo, l'ombra c'era ma il font si deteriorava presentando delle scalettature. Questo è l'effetto shadow con Firefox usando la proprietà text-shadow
e questo l'effetto shadow usando il filter shadow di microsoft
Questo sostanzialmente è dovuto al fatto che in IE la proprietà ClearType del browser è disattivata per default e questo impedisce a IE di effettuare al meglio il rendering del font. A questo aggiungiamo il fatto che stavo usando dei font personalizzati ed evidentemente non adatti a queste operazioni. Sembra infatti che con i font standard questo non accada, ma non ne sarei tanto sicuro. Comunque, alla fine il girovagare per la rete ha dato i suoi frutti. Ho infatti trovato un javascript che sfrutta jQuery per realizzare un effetto che si avvicina molto a quello del css3. Lo script si chiama jquery.textshadow.js e lo potete scaricare da questo link. Il link per scaricare jquery lo trovate in fondo a questo articolo. Come si usaNel foglio di stile del template aggiungete la proprietà text-shadow per quelle classi che dovranno formattare il testo con l'effetto ombra, questo serve affinchè gli altri browser visualizzino l'effetto ombra sui caratteri. Esempio
Scaricate lo script jquery.textshadow.js e lo script jquery.js e metteterli dentro una cartella (ad esempio chiamata js) all'interno della cartella del template. Nel file index.php del template inserite il codice qui sotto riportato, possibilmente in fondo al file prima del tag </body>. In genere tutti gli script javascript andrebbero inseriti in fondo alla pagina.
Le prime due righe collegano i due script al file index.php, da notare che il path viene generato da Joomla stesso. Nella porzione di javascript che usa la funzione .TextShadow contenuta nello script jquery.textshadow.js dobbiamo, a nostro piacimento, modificare i valori x e y per determinare la posizione dell'ombra rispetto al carattere (il valore può essere sia positivo che negativo ed è espresso in pixel), il valore del raggio di espansione dell'ombra e il suo colore. La funzione che realizza l'effetto ombra ha la seguente sintassi: $("nome_classe").textShadow( option ); dove "nome_classe" è la classe del foglio di stile, applicata ad un determinato tag del nostro template, a cui vogliamo applicare l'effetto ombra. Ad esempio la classe .moduletable h3 formatta il titolo dei moduli, quindi scrivere $(".moduletable h3").textShadow( option ); significa dire allo script di applicare l'effetto ombra ai titolo dei moduli. Cercate di usare questo script con parsimonia applicando al numero minore di classi di stile altrimenti rischiate di rallentare la visualizzazione della pagina. Noterete infatti che, quando la pagina viene caricata con IE, questa prima viene visulizzata con i font normali e solo dopo compare l'effetto ombra. Link utilijQuery download |