Jätke Doctypi välja, et sirvijaid unustata
Kui olete veebisaite kujundanud rohkem kui paar kuud, olete tõenäoliselt kursis kõigi lehtede jaoks ühesuguse lehekülje kirjutamise raskusega. Tegelikult on see võimatu. Paljud brauserid on kirjutatud spetsiaalsete funktsioonidega, mida nad saavad hakkama saada. Või on neil spetsiaalsed viisid selliste asjade käitlemiseks, mis erinevad sellest, kuidas teised brauserid neid käsitlevad. Näiteks:
- Layers loodi kasutamiseks Netscape brauserites. Nad ei tööta üheski teises brauseris ja on tegelikult Netscape 6.x + -ga vananenud.
- Sisemised kaadrid olid algselt loodud ainult Internet Exploreri jaoks ja on sellest ajast alates saanud HTML-i spetsifikatsiooni osaks.
- Internet Explorer 6.0 lisab täiendava ruumi (nt
) ümbritsevad sildid, kui te ei kirjuta divi sisu sisu ühele (pikale) reale. (IE 6-l on lisaks sellele veel palju eeliseid.) - Netscpe 4.7 ei näita tabeleid, mis ei ole kirjutatud õiges HTML-is - see näitab tühja lehe asemel. See oli fikseeritud Netscape 6-s.
Brauseriprojektide probleem on see, et nad peavad looma veebibrausereid, mis on vanemate brauseritega ehitatud veebilehtedega sammu võrra ühilduvad. Selle probleemiga tegelemiseks on brauseritootjad loonud režiimid brauserite kasutamiseks. Need režiimid määratletakse DOCTYPE-elemendi olemasolu või puudumise ja selle DOCTYPE-i kutsumisega.
DOCTYPE Switching ja "Quirks Mode"
Kui lisate oma veebilehel järgmise DOCTYPE:
Kaasaegsed brauserid (Android 1+, Chrome 1+, IE 6+, iOS 1+, Firefox 1+, Netscape 6+, Opera 6+, Safari 1+) tõlgendavad seda järgmiselt:
- Kuna seal on õigesti kirjutatud DOCTYPE, käivitab see standardirežiimi.
- See on ülemineku dokument HTML 4.01
- Kuna see on standardses režiimis, muudab enamik brauserit sisu nõuetele vastavaks (või enamasti ühilduvaks) HTML 4.01 üleminekuajaga
Ja kui panete selle dokumendi DOCTYPE:
See ütleb tänapäevastele brauseritele, et soovite kuvada oma HTML 4.01 lehte, järgides täpselt DTD-d.
Need brauserid lähevad režiimile "ranged" või "standardid" ja muudavad lehe standardid. (Selle dokumendi puhul võivad sellised märgendid olla brauseri poolt täielikult ignoreeritud, kuna FONT-element on HTML 4.01 rangelt keelatud.)
Kui jätate DOCTYPE välja täielikult, käivitatakse brauserid automaatselt "quirks" režiimis.
Alljärgnev tabel näitab, mida tavalised brauserid teevad, kui neid esitatakse koos erinevate ühiste DOCTYPE avaldustega.
Microsoft teeb seda raskemaks
Internet Exploreris 6 on ka funktsioon, mille abil saate DOCTYPE deklaratsiooni ülaltoodud asjadesse minna. Nii mõlemad nendest näidetest panevad IE 6 pärisrežiimi, kuigi DOCTYPE deklaratsioonid räägivad rangete standardite režiimis:
ja XHTML 1.1 DOCTYPE:
Veelgi enam, kui sa saad IE6-le varem, siis on sul funktsioon, mida Microsoft lisab IE8-s ja IE9-s: META-elemendi vahetamine ja veebisaidi musta nimekirja koostamine. Tegelikult on nendel kahel brauseri versioonil nüüd kuni seitse (!) Erinevat režiimi:
- IE 5.5 quirks mode (IE 8 ja 9)
- IE 7 standardirežiim (IE 8 ja 9)
- IE 8 peaaegu standardirežiim (IE 8 ja 9)
- IE 8 standardite režiim (IE 8 ja 9)
- IE 9 peaaegu standardirežiim (IE 9)
- IE 9 standardirežiim (IE 9)
- XML-režiim (IE 9)
IE 8 tutvustas ka "ühilduvusrežiimi", kus kasutaja saaks valida, kas muuta rippmenüü tagasi IE 7 režiimi. Nii et isegi siis, kui määrate režiimi, mida soovite määrata nii DOCTYPE kui ka META elementide abil, võidakse teie lehte allapoole tagasi lükata vähem normidele vastav režiim.
Mis on Quirki režiim?
Kõigi kummalise renderdamise ja nõuetele mittevastava brauseri tugi ja häkkide tegemine, mida veebidisainerid nende asjadega tegelemiseks kasutasid, on loodud erakonna režiim. Brauseritootjate mure oli, et kui nad lülitaksid oma brauserid täieliku spetsifikatsiooni nõuetele vastavusse, jätta veebidisainerid maha.
DOCTYPE-i lülitamise ja "Quirks Mode" seadistamisel lubasid veebidisainerid valida, kuidas nad soovivad, et brauserid HTML-i muudaksid.
Quirki režiimiefektid
Mõned efektid, mida enamus brauseritel Quirki režiimis kasutab, on:
- Mõnedes brauserites muutub kasti mudel kasti mudeli IE 5,5 versiooni quirks režiimis.
- Mõned brauserid ei anna stiile tabelidesse
- Mõõdukate režiim mõjutab CSS-i ja CSS-skeemi parsimist dramaatiliselt, kui teete lehekülgede konverteerimiseks standardite režiimist pärisrežiimis, kontrollige kindlasti oma CSS-i paigutust ja laialdast parsimist.
- Jälgige skriptimisega seotud muudatusi, kui olete harjunud režiimis. Firefox muudab näiteks id-atribuudi toimimist. IE8 ja IE9 on dramaatilisi muudatusi skriptimisega quirks režiimis.
Samuti on erinevused "peaaegu standardversioonis:"
- Ainult sisemiste piltidega lauaartiklite kõrgus arvutatakse standardmeetodist erinevalt.
Kuidas valida DOCTYPE
Ma lähemalt üksikasjalikult oma artiklis DOCTYPE List, kuid siin on mõned üldised rusikareeglid:
- Valige alati standardrežiim. Ja praegune standard, mida peaksite kasutama, on HTML5: Kui teil pole konkreetset põhjust HTML5 DOCTYPE kasutamise vältimiseks, siis peaksite seda kasutama.
- Minge rangesse HTML-i 4.01-ni, kui peate kinnitama päranduselemente või soovite mõnel põhjusel uusi funktsioone vältida.
- Kui olete tabelis pilte viilutanud ja te ei soovi neid parandada, minge üleminekuajale HTML 4.01:
- Ärge kirjutage lehti ettekavatsematult vallandamise režiimis. Kasuta alati DOCTYPE-d. See säästab teid arendusaja jooksul tulevikus ja pole tõesti kasu. IE6 kaotab populaarsuse kiiresti ja selle brauseri kujundamisel (mis on põhimõtteliselt see, mis kujundab quirks-režiimis), piirates ennast, oma lugejaid ja teie lehti. Kui peate kirjutama IE 6 või 7 jaoks, siis kasutage nende toetamiseks tingimuslikke kommentaare, mitte sundides tänapäevaseid brausereid muutumatuna režiimi.
Miks kasutada DOCTYPE'i
Kui olete teadlik sellist tüüpi DOCTYPE-i vahetamisest, saate oma veebisaite otsesemalt mõjutada, kasutades DOCTYPE-d, mis näitab, mida brauser teie lehelt ootavad. Kui hakkad DOCTYPE-d kasutama hakkama, kirjutaksite HTML-i, mis on lähemal kehtivale (te peate selle veel kinnitama). Kui kirjutad kehtivat XHTML-i, siis julgustad brauserit tegijaid standarditele vastavate brauserite loomiseks.
Brauseri versioonid ja unikaalsed režiimid
DOCTYPE | Android Chrome Firefox IE 8+ iOS-i Opera 7.5+ Safari | IE 6 IE 7 Opera 7 | Netscape 6 |
---|---|---|---|
Puudub | Unistuste režiim | Unistuste režiim | Unistuste režiim |
HTML 3.2 | |||
Unistuste režiim | Unistuste režiim | Unistuste režiim | |
HTML 4.01 | |||
Üleminekuaeg | Standardite režiim * | Standardite režiim * | Standardversioon |
Üleminekuaeg | Unistuste režiim | Unistuste režiim | Unistuste režiim |
Rangelt | Standardversioon | Standardite režiim * | Standardversioon |
Rangelt | Standardversioon | Standardite režiim * | Standardversioon |
HTML5 | |||
Standardversioon | Standardite režiim * | Unistuste režiim | |
* Selle DOCTYPE-ga on brauserid standarditele vastavuses, kuid neil on probleeme - kindlasti proovige. Seda nimetatakse ka "peaaegu standardseisundiks". |