# Quirks mode

In informatica, la quirks mode (in italiano "modalità quirks") si riferisce a una tecnica utilizzata da alcuni browser Web al fine di mantenere la retrocompatibilità con le pagine Web progettate per Internet Explorer 5 e versioni precedenti, invece di rispettare rigorosamente gli standard W3C e IETF in modalità standard.

## Panoramica

La struttura e l'aspetto di una pagina Web sono descritti da una combinazione di due linguaggi standardizzati:
HTML, un linguaggio di markup progettato per l'uso web, che descrive la struttura e il contenuto della pagina; e CSS, un linguaggio di foglio di stile generalizzato, che specifica come la pagina deve essere resa in vari media (stili visivi per la visualizzazione dello schermo, stili di stampa da utilizzare quando si stampa la pagina, stili uditivi da usare quando la pagina viene letta ad alta voce da uno screen reader, ecc. .). Tuttavia, la maggior parte dei browser Web meno recenti non implementava completamente le specifiche per questi linguaggi o era stata sviluppata prima della finalizzazione delle specifiche (Microsoft Internet Explorer versione 5.0 per la piattaforma Macintosh, lanciata nel 2000, era il primo browser Web con supporto completo per CSS Livello 1, ad esempio). Di conseguenza, molte vecchie pagine Web sono state costruite per fare affidamento sulle implementazioni incomplete o errate dei vecchi browser, e verranno riprodotte solo come previsto quando gestite da un tale browser.
Il supporto per HTML e CSS standardizzati nei principali browser Web è aumentato in modo significativo, ma la grande quantità di documenti legacy che si basano sulle stranezze dei browser più vecchi rappresenta un ostacolo per gli sviluppatori di browser, che desiderano migliorare il loro supporto per HTML e CSS standardizzati, ma anche mantenere la compatibilità con le versioni precedenti di pagine non standardizzate. Inoltre molte nuove pagine Web continuano a essere create seguendo i vecchi criteri, dal momento che le tecniche di compatibilità introdotte dagli sviluppatori di browser implicano che non sia strettamente necessario seguire i metodi standardizzati.
Per mantenere la compatibilità con il maggior numero possibile di pagine Web, i moderni browser Web sono generalmente sviluppati con più modalità di rendering: in "modalità standard" le pagine vengono renderizzate secondo le specifiche HTML e CSS, mentre in "quirks mode" vengono fatti tentativi di emulare il comportamento dei browser più vecchi. Alcuni browser (quelli basati sul motore di rendering Gecko di Mozilla, o Internet Explorer 8 in modalità rigorosa, ad esempio) utilizzano anche una modalità "quasi standard", la cui principale caratteristica consiste nell'implementazione di una tecnica di dimensionamento delle celle delle tabelle, mentre per il resto si conforma alle specifiche.

## Differenze di modalità ed esempi

Una differenza importante tra i quirk e le modalità standard è la gestione del bug del modello di box CSS Internet Explorer. Prima della versione 6, Internet Explorer utilizzava un algoritmo per determinare la larghezza della scatola di un elemento che era in conflitto con l'algoritmo dettagliato nelle specifiche CSS e, a causa della popolarità di Internet Explorer, sono state create molte pagine che si basavano su questo algoritmo non standard. A partire dalla versione 6, Internet Explorer utilizza l'algoritmo della specifica CSS durante il rendering in modalità standard e utilizza l'algoritmo non standard precedente durante il rendering in modalità quirk.
Un'altra differenza degna di nota è l'allineamento verticale di alcuni tipi di contenuto in linea; molti browser più vecchi hanno allineato le immagini al bordo inferiore della loro casella di contenimento, sebbene le specifiche CSS richiedano che siano allineate alla linea di base del testo all'interno della casella. In modalità standard, i browser basati su Gecko si allineeranno alla linea di base e in modalità quirk si allineeranno alla parte inferiore.
Inoltre, molti browser meno recenti non implementavano l'ereditarietà degli stili dei caratteri all'interno delle tabelle; di conseguenza, gli stili dei caratteri dovevano essere specificati una volta per il documento nel suo insieme e di nuovo per la tabella, anche se le specifiche CSS richiedono che lo stile dei caratteri venga ereditato nella tabella. Se le dimensioni dei caratteri sono specificate mediante unità relative, un browser conforme agli standard erediterà la dimensione del carattere di base, quindi applicherà la relativa dimensione del carattere all'interno della tabella: ad esempio, una pagina che ha dichiarato una dimensione del carattere di base dell'80% e un carattere di tabella dimensioni dell'80% (per garantire una dimensione dell'80% nei browser che non ereditano correttamente le dimensioni dei caratteri), in un browser conforme agli standard, visualizzare tabelle con una dimensione del font del 64% (80% dell'80%). Di conseguenza, i browser in genere non ereditano le dimensioni dei caratteri nelle tabelle in modalità quirk.
Una terza modalità di compatibilità nota come "modalità quasi standard" o "modalità rigorosa" che mantiene il dimensionamento verticale "tradizionale" delle celle di una tabella secondo le specifiche CSS2, è stata implementata in questi browser: Safari, Opera 7.5 (e successive), tutti i browser basati su Gecko dalla 1.0.1 (come Firefox) e Internet Explorer 8.
Il rendering in modalità "Quasi standard" corrisponde alla modalità "standard" in tutti i dettagli tranne uno. Il layout delle immagini all'interno delle celle di una tabella viene gestito allo stesso modo della modalità "quirks", che è piuttosto coerente con i browser legacy come Internet Explorer 7 (e versioni precedenti). Ciò significa che i layout di immagini affettate su tabelle hanno meno probabilità di sfaldarsi nei browser in modalità "stranezze" o "quasi standard", piuttosto che in modalità "standard".