La forza del sogno è quella di disegnare qualcosa
dove gli altri vogliono essere.
Neal Grosskopf in un articolo propone una lista di hack CSS con cui è possibile scrivere regole specifiche per ciascuno dei principali browser.
Come introduce l’autore, è una pratica non consigliabile, ma qualche volta potrebbe tornare utile, soprattutto quando avrete bisogno di un modo rapido come obiettivo un browser diverso da Internet Explorer.
L’autore ha creato 6 paragrafi con identificativo i diversi browser per vedere a quali sarà applicata la regola CSS:
<p id="opera">Opera 7.2 - 9.5</p> <p id="safari">Safari</p> <p id="firefox">Firefox</p> <p id="firefox12">Firefox 1 - 2 </p> <p id="ie7">IE 7</p> <p id="ie6">IE 6</p>
nascondendo tutti i tag ‘p’, aprendo il documento nei diversi browser noteremo solo quello appartenente ad esso.
<style type="text/css">
body p {
display: none;
}
</style>
Vi è una robusta sintassi che Microsoft ha creato per consentire agli autori di farlo. Esistono due alternative a seconda della versione del browser:
<!--[if IE 7]> <style type="text/css"> </style> <![endif]--> <!--[if IE 6]> <style type="text/css"> </style> <![endif]-->
Non è molto consigliabile questa tecnica hack in quanto è molto più semplice utilizzare i commenti condizionali descritti sopra, ma se si desidera mantenere tutte le regole CSS in un solo file, questa è l’alternativa:
/* IE 7 */
html > body #ie7 {
*display: block;
}
/* IE 6 */
body #ie6 {
_display: block;
}
si noti che il trucco IE7 si applica solo alla versione 7 del browser di casa Microsoft perché la versione 6 non interpreta bene il selettore ‘>’; va inoltre notato che nessuno degli altri browser riconosce questo hack.
Il primo hack ha come obiettivo Firefox versioni 1 e 2, utilizzando un hack vuoto sul tag body. Il secondo trucco, riconosciuto da tutte le versioni di Firefox, si ha utilizzando la proprietà ‘-moz’ combinato con ‘-document url-prefix()’:
/* Firefox 1 - 2 */
body:empty #firefox12 {
display: block;
}
/* Firefox */
@-moz-document url-prefix() {
#firefox { display: block; }
}
Anche Safari ha una propria proprietà CSS, usando ‘-webkit prefix’ viene riconosciuto solo dal browser di Apple:
/* Safari */
@media screen and (-webkit-min-device-pixel-ratio:0) {
#safari { display: block; }
}
Il trucco per Opera può funzionare solo negando una proprietà CSS. Questo hack risulta debole semplicemente perchè presto Firefox supporterà tale hack, quindi sarà riconosciuto anche dalla “volpe di fuoco”.
/* Opera */ @media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0) {
head~body #opera { display: block; }
}
Nel corso degli anni ho acquisito una vasta esperienza nella progettazione e realizzazione in ambito siti e applicazioni web, ma continuo ad approfondire le mie conoscenze e a sperimentare, per migliorarmi e seguire l'evoluzione di Internet.
Mi occupo delle nuove tecnologie di sviluppo sul Web/Internet, con particolare attenzione ad Ajax, Web2.0, jQuery, PHP.
Ulteriori conoscenze da esperienze lavorative:
Kosmas
ottobre 19th, 2008 alle 18:02
Interressante questo articolo MaiNick
Marcorai
novembre 10th, 2008 alle 12:51
Ottimo, grazie!
Giovanni
febbraio 1st, 2010 alle 01:38
ragazzi scusate ma ho ultimato un sito in css, pubblicato e con internet explorer non mi crea problemi. se lo apro con il mio google chrome invece mi viene tutto sfalsato. aperto con google chrome da altro pc invece si vede. ma sono certo che ha problemi di compatibilità. avete soluzioni? non sono sicuro se questo articolo fa al caso mio. potete aiutarmi? il sito è http://www.corsiadr.it grazie
MaiNickWeb
febbraio 1st, 2010 alle 02:05
Ciao avendo un Mac non posso vedere la differenza con internet explorer, ma su Firefox 3.6, Safari 4 e Google Chrome si vede uguale.
A me sembrerebbe senza css, perché il menu a sinistra è composto da semplici link senza stile: poi non so se deve essere così.
Giovanni
febbraio 1st, 2010 alle 10:51
@ MaiNickWeb:
ho messo un immagine di come dovrebbe essere il sito:
http://www.corsiadr.it/prova.html
lo visualizzi così?
MaiNick
febbraio 1st, 2010 alle 17:08
Ho visto ora dal tuo codice che importi un foglio di stile style.css con il metodo import, ma tramite un path locale.
Penso che sia quello il file principale perchè poi c’è pochissimo altro codice in css.
Vedi se è quello il problema e fammi sapere.
Giovanni
febbraio 1st, 2010 alle 22:00
devo eliminarlo o modificarlo? ma la homepage che vedevi era la stessa dell’immagine dell’ultimo link?
MaiNickWeb
febbraio 2nd, 2010 alle 22:52
No la homepage che vedo io è diversa solo per il fatto che il browser non carica il foglio di stile collegato, quello che tu inserito con il tag import.
Se vedi nel codice dopo il titolo della pagina importi un foglio di stile in questo modo:
@import url(“file:///C|/Documents and Settings/Giovanni/Documenti/template/5macchina/styles.css”);
devi inserire non questo path ma il percorso o link dello stesso file che hai caricato sul server che ospita il sito web.
Giovanni
febbraio 3rd, 2010 alle 12:47
ho inserito il percorso giusto ma stavolta non lo visualizza a me il foglio di stile giusto nel senso che lo sfondo è tutto bianco (su dreamweaaver)
ho messo il percorso per il file “styles” che si trova dentro la cartella principale del sito e il codice è questo:
Corsi ADR – Certicato di formazione professionale – Home Page
<!–
@import url("file:C:\Documents and Settings\Giovanni\Documenti\sito corsiadr/styles.css");
.style2 {font-size: 16px}
.style3 {
font-size: 16px;
font-weight: bold;
font-family: Arial, Helvetica, sans-serif, ReservoirGrunge;
color: #CCCCCC;
c'è qualcosa di sbagliato?
MaiNick
febbraio 3rd, 2010 alle 14:04
Non va bene perché quando lo carichi sul server dove è ospitato il tuo sito quel percorso non è più valido.
Inserisci il percorso relativo, cioè mi sembra il file styles si trovi nella stessa cartella del file che lo sta richiamando, quindi cancella tutto il percorso e metti solo il nome del file @import url(“styles.css”);
Giovanni
febbraio 3rd, 2010 alle 16:57
ho risolto copiando l’intero contenuto html del file styles.css in tutte le pagine.
Grazie mille per l’aiuto! sei gentilissimo.
alla prossima!
MaiNickWeb
febbraio 3rd, 2010 alle 18:37
Di niente!
Un’altra soluzione può essere di inserire il link al foglio di stile in tutte le pagine nella parte head, in questo modo:
<link rel=”stylesheet” type=”text/css” href=”http://www.corsiadr.it/style.css” />
prova!!