Perché il ‘titolo’ attributo causare browser di ignorare i miei stili?
Domanda
Il seguente documento HTML (insieme al CSS) non riesce a rendere gli stili in b.css
.
<!doctype html>
<html>
<head>
<link rel="stylesheet" media="screen" type="text/css" title="A" href="a.css" />
<link rel="stylesheet" media="screen" type="text/css" title="B" href="b.css" />
</head>
<body>
<div id="A">A</div>
<div id="B">B</div>
</body>
</html>
/* a.css */
div#A { color: blue; }
/* b.css */
div#B { color: red; }
Rendere i titoli lo stesso (ad esempio, sia <link ... title="A">
la fissa, ma non vedo la ragione, perché dovrebbe. Qual è il titolo facendo, qui, che rende questo torto?
Soluzione
Le specifiche HTML 4.0 afferma che ci sono tre tipi di fogli di stile : persistente, preferito, e si alternano.
- Un foglio di stile è "permanente" se è collegato con
rel="stylesheet"
e non ha attributititle
. Tutti i fogli di stile persistenti vengono utilizzati per il rendering. - Un foglio di stile è "preferito" se è collegato con
rel="stylesheet"
e ha un attributotitle
; fogli di stile preferenziali con la stessatitle
sono raggruppati insieme, ma non dovrebbe essere più di un gruppo. Sembra browser sceglieranno un solo foglio di stile preferito per il rendering poiché ci dovrebbe essere una sola. - Infine, un foglio di stile è "alternate" se è collegato con
rel="alternate stylesheet"
e ha untitle
. Questi fogli di stile si suppone per consentire all'utente di scegliere i fogli di stile, vengono raggruppate insieme datitle
e presentarsi nel selettore di foglio di stile del browser se ne ha uno (View >> Style pagina in Firefox). Ogni gruppo (per titolo) si escludono a vicenda.
Mettendo title
attributi sui vostri fogli di stile, si sta inconsapevolmente trasformandoli di fatto in fogli di stile preferito, piuttosto che il foglio di stile persistente previsto. Questo è anche il motivo per cui lavorare, quando tutti hanno lo stesso titolo.
Altri suggerimenti
In seguito alla risposta di Neil Williams':
Gli autori possono specificare un numero di si escludono a vicenda i fogli di stile chiamati fogli di stile alternativi .... utente dovrebbero consentire agli utenti di scegliere tra fogli di stile alternativi.
(enfasi aggiunta)
Inoltre:
Per fare un foglio di stile preferito, impostare l'attributo rel a "stylesheet" e il nome del foglio di stile con l'attributo title.
Questo è da http: // www.w3.org/TR/REC-html40/present/styles.html#h-14.3.1
Leggere questo: http: //blogs.telerik. com / dimodimov / messaggi / 08-05-15 / title_attributes_in_css_link_tags_prevent_styles_from_being_applied.aspx
Sono stato a conoscenza da qualche tempo quel titolo attributi di CSS tag innescare problemi e prevenire alcuni stili CSS venga applicato sul pagina web. Oggi ho investito un paio di ore a scoprire ciò che in realtà accade e questo è ciò che abbiamo.
Se si dispone di più tag nella Pagina e uno di loro ha un attributo title, poi i tag che viene dopo deve neanche avere un attributo titolo con lo stesso valore oppure nessun attributo title a tutti, altrimenti gli stili CSS in quest'ultimo i file del Non saranno applicati sulla pagina.
Il problema può essere facilmente riprodotto in varie versioni di Firefox, Opera e Safari. L'unico browser, che fa non presenta il comportamento imprevisto è Internet Explorer.
Davvero strano o.o
Mi ci sono voluti circa 3 ore per arrivare alla fine di esso, come mi è stato aggiunta di un nuovo foglio di stile includono. Pensavo di avere alcuni conflitti tra le regole CSS presenti e quelli che stavo aggiungendo. Dopo l'esecuzione di opzioni sane, ho provato a rimuovere il tag del titolo dal collegamento. Non pensavo gran parte di essa, pensano che sia inutile alcuni metadati. Ebbene, si è scoperto che questo era ciò che impediva il CSS di essere analizzato. Si scopre che il comitato di stantio degli standard CSS brainfart si avvicinò con questo. Non potevano solo hanno aggiunto un nuovo attributo che è più chiaro, per la loro funzionalità preferita e quant'altro (qualunque sia il diavolo che si suppone di fare), invece di basarsi sulla presenza o l'assenza dell'attributo titolo? Ho perso tutto quel tempo che dovrebbe essere investito nel fare qualcosa di produttivo. Durante la mia ricerca, mi sono promesso che avrei preso le misure, una volta ho trovato l'origine di questo problema. Ora, resta da decidere le misure.