Uno dei più comuni problemi da affrontare nell'uso dei CSS è il diverso modo con cui i browser visualizzano i testi: oltre alle incompatibilità più eclatanti (per esempio il fatto che Netscape/Mozilla non colorano tutto il background come fa Explorer) la cosa più fastidiosa è a mio avviso il diverso "corpo" con cui vengono resi i caratteri.
Basta guardare JsDir con due browser diversi per rendersi conto della diffrenza.
L'unica soluzione possibile è costruire due o più fogli di stile diversi e far si che il browser scelga da se quello che gli compete.
<HTML>
<HEAD>
<TITLE>Carica CSS diverso per browser</TITLE>
<SCRIPT>
<!--
if (document.layers)
document.write("<LINK HREF='n4.css' REL='stylesheet' TYPE='text/css'>")
else
if (document.all)
document.write("<LINK HREF='ie.css' REL='stylesheet' TYPE='text/css'>")
else
if (!document.all && document.getElementById)
document.write("<LINK HREF='mz.css' REL='stylesheet' TYPE='text/css'>")
else
document.write("<LINK HREF='xx.css' REL='stylesheet' TYPE='text/css'>")
//-->
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#ffffff">
<DIV CLASS="testocentrato">
Se usi Netscape4 questo testo sarà rosso,
se usi InternetExplorer sarà blu,
se usi Mozilla/Netscape6 sarà verde,
altrimenti sarà nero
</DIV>
</BODY>
</HTML>
Lo script va inserito fra i tag
<HEAD> ... </HEAD> e non fa altro che scrivere il classico
<LINK REL> con cui normalmente si carica un foglio di stile esterno.
E' una semplice sequenza di
if () ... else ... che inizia controllando se il browser è Netscape 4.x, altrimenti controlla se il browser è InternetExplorer, se anche questo controllo fallisce verifica che non si stia usando Netscape6/Mozilla.
Se nessuna di queste tre condizioni è soddisfatta scrive un foglio di stile generico ("xx.css"). Ad esempio ho volutamente tralasciato il controllo di Opera per il quale verrà usato il foglio di stile generico.
Volendo includere il browser nel controllo sarà sufficiente aggiungere
&& browser.indexOf("opera")!=-1 ad una qualsiasi delle 3 condizioni per riutilizzare uno dei fogli, o aggiungere un ulteriore
if () alla catena di condizioni. Analogamente si può procedere per includere altri browser.