Hur vet man vilken Doctype man skall välja?
[...]
Vad blir resultatet om man väljer fel/rätt?
Det finns två aspekter på det där...
- Med valet av Doctype väljer du vilka taggar du kan/får använda.
Det är främst kanske viktigt när du validerar din kod eftersom valet påverkar vilka taggar du "får" använda...
I HTML 4 finns tre olika Doctype-varianter att välja mellan. Transitional, Strict och Frameset.
* Strict - "Bantad" version. (en del kallar den "ren" eftersom nästan allt "utseende" måste anges med CSS eftersom Strict saknar saker som bgcolor-attribut och font-taggar) Strict saknar även <iframe>.
* Transitional - Allt som W3C någonsin har godkänt ;) <font>, <iframe> osv.
* Frameset - Används för "frameset"-sidor (dvs den sidan som innehåller <frameset> och <frame>
Väljer du "rätt" Doctype får du använda de taggar du tänkt dig (i ditt fall, måste du antagligen välja Transitional eftersom jag förstått att du vill kunna använda t.ex. <iframe>)
Så långt är det inga konstigheter - men sedan finns det en aspekt till:
2) Beroende på hur du skriver din Doctype-tagg så kommer din webbläsare att bete sig på olika sätt!
Dagens webbläsare har två olika "moder" som de väljer mellan när de skall rita ut en sida. Moderna kallas "Quirks" (eller "bakåtkompatibel") och "Standards".
Webbläsaren väljer vilken mod som skall användas genom att kolla hur den Doctype du använder är skriven!
Exempel:
Du väljer att köra HTML4.01 Transitional.
En Doctype för detta kan då se ut som följer:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Den kan också se ut såhär:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
eller såhär:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
Oavsett vilken du väljer, så kommer din kod (om den är korrekt) att validera, men olika webbläsare kommer att hantera din sida olika beroende på att den första och sista (eller helt utelämnad Doctype!) ställer in webbläsare i "Quirks"-mode och den i mitten ställer in webbläsaren i "Standards"-mode.
Det är här det blir klurigt eftersom skillnaderna mellan "Quirks" och "Standards" ofta märks visuellt...
Exempel:
Ta filen:
<html>
<head><title>Test</title></head>
<body>
<table style="height:100%; width:100%; border: 1px solid black">
<tr><td style="text-align:center;">Hej hopp!</td></tr>
</table>
</body>
</html>
(testa: http://member.webforum.nu/2241/doctype1.html )
Inga konstigheter...
Hej hopp mitt på sidan!
Men lägg nu till
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
överst....
(Testa: http://member.webforum.nu/2241/doctype2.html )
Och hoppsan Kerstin! - Nu blev det skillnad i höjdled !!!
(i Standards-mode måste du nämligen ställa in height:100% på body och html mha CSS för att det skall funka som man kanske tror - men det är en annan historia - t.ex. http://www.webforum.nu/showthread.php?s=&postid=8068#post8068 ;) )
Vilken Doctype skall jag använda mig av?
Hmm...
Du har, som MikkeX påpekar redan valt "rätt" med tanke på de taggar du använder...
Valet du har kvar är vilken variant av "Transitional-Doctype" du skall köra med...
Min erfarenhet? - Eh... Det beror på :p ( ledsen - men det finns inget enkelt svar). Jag gillar personligen att koda för "Standards" mode just nu eftersom jag upplever att webbläsarna av idag (ja - jag blir 40 snart ;) ) beter sig mer lika om man kör "standards" mode än om man kör "Quirks" - men det kan iofs bero lika mycket på min kodningsstil som på något annat.
Men är man van att "width:100%" på en tabell även innefattar border och padding-värden och blir förvånad när man får rullningslister så skall man nog sikta på "Quirks"-mode...
Sök lite i ämnet (ange t.ex, "Quirks mode" eller "quirky mode" på Google - och du har att göra en stund ;) ) och prova dig fram.
Kolla även in http://www.hut.fi/u/hsivonen/doctype.html
Om inte annat hittar du där (längst ner) en länk som verkar handla om hur IE5/Mac hanterar det där med Doctype ;)