Avatar billede lone_a_p Praktikant
10. september 2005 - 09:32 Der er 10 kommentarer og
1 løsning

Hvordan skal doctypen se ud?

Hej,

Jeg er ved at gøre, så mit site kan gå gennem valideringen på w3.org ... men jeg kan ikke helt finde ud af det med doctypen.

Når jeg skriver <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> virker det fint nok.

Men skriver jeg dette: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> bliver den gal med teksten på siden. Det er som om den ikke læser stylesheet så - korrekt?

Jeg ved ikke engang om det er det rigtige jeg skriver. Håber på at få lidt hjælp her :)

Jeg fik i øvrigt at vide i en anden tråd, at jeg skulle skrive spørgsmålet i denne kategori - men hvad er DHTML? Hvad står D'et for, og hvad betyder det?

Mvh Lone
Avatar billede schwarz84 Nybegynder
10. september 2005 - 09:52 #1
D står for dynamic, altså at det også dækker kombinationer af HTML og javascript.

Når du indsætter den URL i doctypen, begynder Internet Explorer at tolke CSS på en anden måde (korrekt måde). Det tyder altså på at der er noget galt med dit stylesheet, når det vises forkert med korrekt doctype. Kan vi komme til at se din side?
Avatar billede olebole Juniormester
10. september 2005 - 11:50 #2
<ole>

DHTML står ganske rigtigt for 'Dynamisk HTML' - men teknikken består udover HTML og JavaScript også af CSS og DOM  :)

Problemet opstår, fordi du udvikler uden DTD - eller med en DTD uden definitions-URL'en. Hvis du i den situation får din CSS til at virke, som du ønsker i IE, er det næten helt sikkert, der opstår fejl i andre browsere - og i IE, hvis der indsættes en brugbar DTD.

Du er nødt til at bruge DTD'en med URL - og tilpasse din CSS, så den fungerer. Efterfølgende bør du så altid begynde dine projekter med den DTD  ;o)

Hvad MS selv skrive om emnet:
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnie60/html/cssenhancements.asp

- kik under 'The Doctype Switch'

/mvh
</bole>
Avatar billede lone_a_p Praktikant
10. september 2005 - 11:52 #3
desværre ikke lige nu, for jeg er ved at lave det om (kun på min locale pc)

siden bliver brugt af mange og jeg skal derfor først have det hele på plads inden jeg overskriver med noget forkert

men du har hjulpet mig alligevel, jeg har været ved at standardisere koderne (det så herrens ud i Firefox, da jeg fik den downloaded!), så mangler jeg blot css - men så vidt jeg husker har jeg også set dette på w3.org ... så jeg må videre med det ;)

foreløbig tak :)
Avatar billede lone_a_p Praktikant
10. september 2005 - 11:55 #4
hov - nu kom der et indlæg indimellem

ole> det forstod jeg ikke meget af, men jeg må se om tilpasningen til css kan gøre noget ... det gør det nok ;)
Avatar billede lone_a_p Praktikant
10. september 2005 - 13:21 #5
cool nok, det var jo meget nemt - det meste var blot at der manglede nogle px bagved font-size: 10; f.eks. :)

tak for hjælpen!

smid et par svar, så får I begge point :)

mvh Lone
Avatar billede olebole Juniormester
10. september 2005 - 14:52 #6
Hehe ... så let slipper du zq ikke!  ;D

Mit succeskriterie er ikke lidt points oveni statistikken, men at få dig til at skrive nogen sider, du bliver glad for - og nogen, vi andre ikke vil brokke os over. Det er helt rigtigt, du altid skal bruge enheder på dine værdier (undtagen på værdien 0), men der er lige nogle andre ting, jeg gerne ville have dig til at forstå ... bær venligst over med mig  ;o)

Et HTML-dokument skal altid påbegyndes med en DTD (DocType Definition). Den fortæller browseren, hvad det er for et dokument, den skal til at behandle - og i hvilken HTML-version, det er skrevet. Mere om DTD'er om lidt.

I CSS opererer man med noget, man kalder box-modellen. Det er de regler, der bl.a. beskriver, hvordan og hvor browseren skal anbringe f.eks. border, margin og padding.
Den generelle regel siger, at bredden af disse altid skal lægges til elementets dimensioner. Det betyder, at et div, der får følgende styles sat, reelt er 102px højt og bredt (bredden plus to gange borderWidth - og det samme med højden):
  style="width:100px;height:100px;border:1px solid red"

Sådan har IE bare ikke gjort tidligere, hvilket har givet tonsvis af problemer med komplet forskellige stylesheets til forskellige browsere. IE har nemlig lagt borderen indenfor elementets bredde og højde.

Derfor valgte MS - med udgivelsen af IE6.0 - at give muligheden for at få IE til at opføre sig i henhold til standarden. Det gøres ved at inkludere definitions-URL'en i DTD'en:
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

- definitions-URL'en er det, der står mellem det sidste sæt gåseøjne. Når IE ser den, ved den, at den skal opføre sig, som CSS-standarden foreskriver.

Her er tre eksempler, du kan prøve i både FF og IE:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
div {
    width: 200px;
    height: 200px;
    background-color: yellow;
}
.gnu {
    border: 50px solid red;
}
</style>
</head>
<body>

<div class="gnu">HejHep, du</div>

<div>HejHep, du</div>

</body>
</html>

- og:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
div {
    width: 200px;
    height: 200px;
    background-color: yellow;
}
.gnu {
    border: 50px solid red;
}
</style>
</head>
<body>

<div class="gnu">HejHep, du</div>

<div>HejHep, du</div>

</body>
</html>

- og:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
div {
    width: 200px;
    height: 200px;
    background-color: yellow;
}
.gnu {
    border: 50px solid red;
}
</style>
</head>
<body>

<div class="gnu">HejHep, du</div>

<div>HejHep, du</div>

</body>
</html>

Som du ser, tolker FF dem alle ens - og korrekt ifølge CSS. IE tolker derimod kun det første korrekt.

Det er også meget vigtigt, der ikke står andet før DTD'en! Dette fejler således også i IE:

<!-- Bare en squide kommentar smadrer CSS i IE  :o| -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
<style type="text/css">
div {
    width: 200px;
    height: 200px;
    background-color: yellow;
}
.gnu {
    border: 50px solid red;
}
</style>
</head>
<body>

<div class="gnu">HejHep, du</div>

<div>HejHep, du</div>

</body>
</html>

... _så_ kan jeg forsvare at lægge et svar  ;o)
Avatar billede olebole Juniormester
10. september 2005 - 14:58 #7
PS: Det jeg her har skrevet om border gælder også padding. Du kan f.eks. prøve dette:

.gnu {
    border: 50px solid red;
    padding: 100px;
}

I øvrigt er det muligt at teste om et dokument i browseren understøtter CSS. I adresselinjen skriver du:
  java script:alert(document.compatMode)
- og trykker 'Return'.

Returneres 'CSS1Compat' er alt iorden.
Returneres derimod 'BackCompat' i IE ('QuirksMode' i Opera), understøttes de omtalte CSS-ting ikke
Avatar billede olebole Juniormester
10. september 2005 - 15:01 #8
Hvis du prøver stuntet med adresselinjen på det dokument, du sidder og læser i nu, vil du se, der returneres 'BackCompat' i IE. Det skyldes, at koderen har sat en - iøvrigt overflødig - XML-prolog før DTD'en:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

... osv - osv ...
Avatar billede olebole Juniormester
10. september 2005 - 15:13 #9
- håber ikke, jeg har slidt dit scrollhjul helt op *LooL*
Avatar billede lone_a_p Praktikant
10. september 2005 - 21:49 #10
Hej olebole,

Hold da op, jeg er lige kommet hjem fra arbejde - fuldstændig kvæstet :) - og så skal hjernecellerne til at i gang igen ;)

Jeg har ikke lige prøvet de tre forskellige eksempler, jeg udvikler aldrig med borders ... jeg synes ikke de er ret pæne :/ (måske jeg bliver klogere engang).

Men det med at fyre javascript af i adresselinjen vidste jeg ikke. Det er helt klart noget jeg vil bruge fremover!

... og så fandt jeg også ud af, hvad DTD står for ;)

Tak for dine svar! :)
Avatar billede olebole Juniormester
11. september 2005 - 11:59 #11
- selvtak ... og tak for points  :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester