Ipotesi: nella stesura e nel test del CSS, vi trovate ad avere problemi di resa con Internet Explorer. Domanda: se doveste scegliere tra usare un hack o il commento condizionale, quale preferireste?
La mia risposta, e credo che i lettori l'abbiano intuito, è: nessuno dei due, prima preferirei usare un workaround. Ma se proprio dovessi scegliere, userei il commento condizionale: è a prova di futuro, non "inquina" il CSS principale e sarei sicuro che risolverei il problema nella maniera più pulita tra le due.
La mia scelta credo sia piuttosto condivisa tra gli standardisti, ma l'altra sera mi è capitato di leggere una voce decisamente fuori dal
coro. Jens Meiert in Why "Conditional Comments" are bad, repeat: bad sostiene con forza che il commento condizionale sia il male. Traduco alcuni passaggi significativi:
L'uso del commento condizionale è sconsigliabile. Di fatto, contraddice l'obbiettivo di separazione tra struttura e presentazione, e un giorno ti sopraffarà . [...]
Cosa c'è di sbagliato nel commento condizionale? Due cose importanti:
- Nonostante sia sintatticamente valido non è standard compliant:
l'informazione che compare tra i commenti non ha significato e i commenti
saranno ignorati dal parser.- Il commento condizionale modifica l'HTML, compromettendo la separazione
tra struttura e presentazione in ogni caso. Pensaci su. [..] àˆ più semplice e "pragmatico" usare i peggiori (ma validi) hack, filtro o workaround che trovi. Almeno vivono nel foglio di stile.
Personalmente mi trovo abbastanza in disaccordo. Quanto al primo punto:
il commento condizionale è perfettamente standard. Ogni browser che non sia IE vedrà tutto cià che è incluso nel commento condizionale come un commento, appunto. àˆ una soluzione proprietaria è vero, ma è per risolvere un problema proprietario, ovvero un bug specifico di IE. Non c'è niente di nocivo per gli altri browser, né ora né in futuro.
Sul secondo punto: è vero, il commento condizionale richiede l'editing dell'HTML, e devo confessare che questo è piuttosto noioso. Ma anche i fogli di stile esterni "normali" necessitano dell'editing dell'HTML.
Inoltre, con il commento condizionale non si va a modificare la sua struttura né il suo contenuto, dato che il resta confinato alle versioni di Internet Explorer a cui è indirizzato.
Per cià che riguarda workaround, filtri e hack: hanno un
vantaggio locale rispetto al commento condizionale, dato che riescono a mantenere la centralità delle regole CSS al contrario del CC. Fatta eccezione per i workaround però, filtri ed hack purtroppo non si rivelano il più delle volte a prova di futuro come il commento condizionale.
Ci sono due classi di soluzioni CSS che è possibile adottare per combattere un bug: quelle che fanno leva sulla carenza di supporto di selettori e keywords di un browser specifico da una parte, e quelli che sfruttano difetti del parser dall'altra. Quest'ultima classe di soluzioni, sebbene sia in grado oggi di risolvere un problema, potrebbe risultare instabile sui browser che
verranno, estendendo e prolungando il problema invece che confinarlo. àˆ proprio la classe di soluzioni che abbandonerei a favore del commento condizionale se non fosse possibile altrimenti.
Chiudo qui con le riflessioni, ma ci terrei a sapere la vostra opinione in proposito.... domanda: se doveste scegliere tra usare un hack o il commento condizionale, quale preferireste?