Non ci sono molti articoli che trattano le incompatibilità, o le differenze CSS in Firefox da solo - e per una buona ragione.
Firefox ha sempre svolto un ottimo lavoro nel supportare sia CSS che JavaScript in un modo conforme agli standard senza troppi bug scomodi.
Esistono, tuttavia, alcune proprietà e selettori CSS che non sono supportati da una o più versioni rilasciate dalla versione 3.0, che illustrerò qui.
Questo articolo riguarderà bug, incoerenze e non supporto . Quindi, se hai problemi con una proprietà CSS o un selettore in Firefox e non è elencato qui, allora probabilmente dovrai ripensare il tuo layout e riconsiderare quale potrebbe essere il colpevole.
Dal momento che Firefox 2 è virtualmente inesistente , Non prenderò in considerazione tale versione in modo specifico, ma queste informazioni si applicano generalmente a tale versione per impostazione predefinita.
E dovrei notare che il materiale per questo post è stato preso principalmente dal recentemente aggiornato SitePoint Riferimento CSS , che rappresenta il riferimento CSS migliore e più completo disponibile ovunque.
In Firefox 3.x, quando un elemento trabocca il bordo di un genitore che ha il outline
proprietà impostata, la struttura si allungherà per adattarsi all'elemento che la contiene, come mostrato nella schermata seguente:
La corretta implementazione è mostrata nella prossima schermata catturata da Chrome:
Come mostrato sopra, lo schema dovrebbe comprendere l'elemento che viene delineato e non dovrebbe essere influenzato da alcun elemento traboccante. Per garantire che non ci sia confusione, si noti che questo è un bug nell'implementazione di outline
proprietà, non il border
proprietà.
Riferimento: Riferimento CSS SitePoint: struttura Proprietà
In Firefox, quando una tabella ha i suoi bordi impostati su collapse
usando il border-collapse
proprietà, i margini superiore e sinistro della tabella in relazione agli elementi vicini sono 1 pixel off. Questo è mostrato in uno screenshot ingrandito nell'immagine sottostante, che mostra il bordo inferiore di un elemento a livello di blocco (rosso) che tocca il bordo superiore di una tabella compressa (blu):
Ecco l'implementazione corretta di questa coppia proprietà / valore, come mostrato in Chrome:
Come mostrato sopra, poiché i bordi sono "collassati" e poiché la tabella non è un elemento di blocco, dovrebbe esserci un lieve sfalsamento nel margine sinistro e il margine superiore dovrebbe essere pari con il bordo inferiore dell'elemento sopra di esso.
Riferimento: Riferimento CSS SitePoint: proprietà border-collapse
Questo è un valore di proprietà che non è implementato correttamente da nessun browser, incluso Firefox. Quando una riga della tabella non ha contenuti visibili e tutte le sue celle hanno il loro empty-cells
proprietà impostata su hide
, l'intera riga dovrebbe comportarsi come se fosse impostata su "display: none", senza bordi o sfondi visibili.
Nessun browser lo gestisce correttamente, quindi la riga della tabella è ancora visibile, come mostrato nell'immagine seguente.
Riferimento: Riferimento CSS SitePoint: proprietà empty-cells
In Firefox 3.x, un valore negativo su word-spacing
la proprietà verrà considerata come zero sugli elementi in linea adiacenti. Il valore negativo dovrebbe far sì che gli elementi in linea si sovrappongano l'un l'altro, come nel caso del testo, ma ciò non accade. Invece, agli elementi viene assegnata una separazione dello spazio bianco pari a zero senza sovrapposizioni.
L'immagine sotto mostra sia le implementazioni corrette che quelle errate:
Negli esempi mostrati sopra, le tre parole "Frutta", "Verdura" e "Altri cibi" sono confezionate singolarmente elementi, mentre il paragrafo che li avvolge ha il suo
word-spacing
proprietà impostata su un valore negativo.
Il secondo esempio (Firefox) non riesce ad applicare la spaziatura tra parole negative, tranne tra le ultime due parole, perché quelle parole non sono singolarmente avvolte da span ma sono elementi di testo naturali.
Come punto laterale, questo errore si verifica in modo simile in IE8, ma non nelle versioni precedenti di IE.
Riferimento: Riferimento CSS SitePoint: proprietà word-spacing
Quando un elemento ha un valore di decorazione del testo impostato, tale valore non deve essere ereditato dai discendenti fluttuanti. In Firefox 3.x, i discendenti flottanti hanno gli stessi valori di decorazione del testo dei loro genitori, anche se questo non dovrebbe essere il caso.
Nell'immagine sopra, la prima riga è uno screenshot di IE8, che mostra a elemento galleggiato all'interno di un'ancora. Il testo all'interno del
non ha una decorazione di testo visibile, che è il modo corretto per visualizzarlo. In Firefox (mostrato nel secondo esempio), la decorazione del testo viene applicata in modo non corretto al floating
.
Potresti aver notato questo bug in Firefox quando provi a rimuovere la decorazione del testo dalle immagini fluttuanti all'interno delle ancore.
Riferimento: Riferimento CSS SitePoint: proprietà di decorazione del testo
Usando il white-space
proprietà in Firefox 3.5, è possibile specificare se più caratteri spazio devono essere compressi in un singolo spazio o meno. Per impostazione predefinita, i documenti HTML comprimono più spazi in un unico spazio. In alcuni casi, puoi applicare white-space: pre
per evitare che lo spazio bianco venga collassato, che è simile all'uso di Tag HTML. Successivamente, potresti voler rimuovere quell'impostazione usando
white-space: pre-line
(per collassare lo spazio bianco).
Firefox 3.0 non supporta questo valore, quindi lo spazio vuoto verrà mantenuto. Firefox 3.5 comprime correttamente lo spazio. L'immagine sotto mostra entrambi gli esempi:
Allo stesso modo, quando un paragrafo di testo è impostato su white-space: pre-wrap
, questo dovrebbe mantenere spazi bianchi tra le parole, ma dovrebbe naturalmente includere interruzioni di riga. Firefox 3.0 non riesce a implementarlo correttamente, mentre le versioni successive (e tutti gli altri browser) includono le interruzioni di riga naturali. Entrambi gli esempi sono mostrati di seguito.
Tieni presente che l'elemento esterno è dato white-space: pre
mentre un interno sta tentando di ignorare la mancanza di interruzioni di riga usando
pre-wrap
. Da solo, pre-wrap
non avrebbe alcun effetto
Firefox 3.x tratta anche alcuni dei white-space
valori diversi dagli altri browser quando tali valori sono applicati a elemento. Ad esempio, applicando
white-space: nowrap
dovrebbe causare tutto il testo digitato in a per formare una riga, ma Firefox 3.x non lo fa.
Riferimento: Riferimento CSS SitePoint: proprietà white-space
Il CSS consente agli sviluppatori di specificare dove dovrebbero o non dovrebbero avvenire le interruzioni di pagina usando le tre proprietà page-break-before
, page-break-inside
, e page-break-after
. Opera è l'unico browser che supporta pienamente queste proprietà, mentre altri browser offrono supporto parziale o nessun supporto.
Il page-break-inside
proprietà specifica se può verificarsi un'interruzione di pagina all'interno di un singolo elemento a livello di blocco. Firefox non fornisce supporto per questa proprietà. Usando la sintassi page-break-inside: avoid
, puoi evitare che un elemento venga diviso durante la stampa. L'immagine sotto, da un'anteprima di stampa in Opera 10, mostra come questa proprietà può impedire che una lista non ordinata venga suddivisa su due pagine:
Al contrario, guarda l'immagine qui sotto, presa dall'opzione di anteprima di stampa in Firefox 3.5:
Riferimento: Riferimento CSS SitePoint: proprietà dei supporti di paging
Il orphans
e widows
Le proprietà CSS sono supportate solo da Internet Explorer 8 e Opera dalla versione 9. Questa proprietà viene utilizzata per specificare il numero minimo di righe da un singolo paragrafo che possono verificarsi su una pagina stampata, nella parte inferiore (orfani) o in quella superiore (vedove ). A seconda del numero scelto, le linee verranno spostate da una pagina all'altra (o precedente) per evitare che una singola riga venga stampata nella parte superiore o inferiore di una pagina.
Anche con il orphans
proprietà impostata su un valore di "3", come mostrato nell'immagine sottostante, l'anteprima di stampa di Firefox mostra una singola riga in fondo a una delle pagine stampabili:
Simile al page-break-inside
proprietà, Firefox non riesce a supportare i valori avoid
, left
, e right
per entrambi page-break-before
e page-break-after
proprietà.
Riferimenti: Riferimento CSS SitePoint: proprietà orfani | Riferimento CSS di SitePoint: proprietà di vedove
Il Internet Explorer 8, Chrome e Safari implementano correttamente questa funzionalità, impedendo che il nidificazione degli elementi del blocco rotti lo stile, come mostrato nell'immagine seguente: Nel paragrafo precedente, il testo è all'interno di a Riferimento: Riferimento CSS SitePoint: Pseudo-Element di prima linea Firefox ha gradualmente aggiunto un migliore supporto per CSS3 dal rilascio della versione 3.0. Di seguito è riportata una descrizione di come Firefox gestisce le diverse funzionalità di CSS3. Alcuni di questi potrebbero ancora essere nel bozza di lavoro o raccomandazione del candidato stadio, quindi non possiamo essere dogmatici su ciò che dovrebbe e non dovrebbe essere supportato fino a quando non hanno raggiunto il raccomandazione palcoscenico. Alcuni dei bachi e delle incompatibilità più significativi sono stati discussi sopra, ma ce ne sono altri che vale la pena notare. Dopo aver esaminato questo materiale, è possibile vedere chiaramente che la mancanza di supporto delle funzionalità CSS in Firefox è minima e in molti casi del tutto irrilevante poiché molte delle proprietà qui discusse non sono molto usate. Ciò nonostante, spero che questo fornisca un riferimento decente per i bug e le incongruenze più significative in Firefox. Se hai problemi con una particolare caratteristica di CSS in Firefox che non è elencata qui, è probabile che stai facendo qualcosa di sbagliato o che potresti non comprendere appieno determinati concetti e principi CSS. Quindi, a tale riguardo, questo riferimento dovrebbe funzionare bene come riferimento inverso , dal momento che quelli non elencati qui possono essere considerati affidabili se funzionano correttamente con una sintassi corretta. Naturalmente, se c'è qualcosa che ho perso, o eventuali errori, per favore commenta e farò del mio meglio per apportare eventuali correzioni e aggiunte. Immagine di Firefox fornita da Rakaz Questo post è stato scritto esclusivamente per Webdesigner Depot da Louis Lazaris, scrittore freelance e sviluppatore web. Louis corre Web impressionanti dove pubblica articoli e tutorial sul web design. Puoi seguire Louis su Twitter o mettiti in contatto con lui attraverso il suo sito web . :first-line
lo pseudo-elemento consente alla prima riga di un determinato blocco di testo di avere una formattazione diversa dal resto del testo. Ad esempio, la prima riga di un paragrafo di testo può essere modificata in maiuscolo o in un altro colore. Affinché questo elemento CSS funzioni in modo pratico, dovrebbe consentire la possibilità di elementi nidificati a livello di blocco. Ad esempio, a elemento dovrebbe consentire
:first-line
pseudo-elemento per cambiare lo stile della prima riga di testo all'interno del elemento, che risiede all'interno di a
ha il
:first-line
pseudo-elemento impostato su color: blue
, che non riesce in Firefox a causa del nidificazione del paragrafo all'interno del Supporto CSS3 in Firefox 3.x
text-shadow
proprietà box-shadow
proprietà, tranne quando si utilizza il prefisso proprietario -moz-
box-sizing
proprietà, tranne quando si utilizza il prefisso proprietario -moz-
-moz-
si usa border-image
proprietà, ma 3.5 lo supporta usando -moz-
prefisso proprietario Altre funzionalità CSS non supportate
run-in
per il display
proprietà ::selection
pseudo-elemento Conclusione
Ulteriori riferimenti