Kurt Hansen udtrykte præcist:
> Jeg har forsøgt at finde ud af de grundlæggende forskelle på <html> og
> <body>. Af de mange og meget forskellige resultater og søgningen kan
> jeg udlede, at jeg ikke er den første der er i vildrede.
>
> En forsigtig konklusion må indeholde følgende:
>
> <body> har, i modsætning til <html>, en defaultværdi på 8px for
> margin, men ingen af dem en defaultværdi for padding, hvorfor en
> nulstilling af sidstnævnte er overflødig.
>
> Begge kan forsynes med 'background-color'. Hvis man undlader at
> nulstille margin, vil ...
>
> html { background-color: yellow; }
> body { background-color: red; }
>
> ... vise en rød flade med en gult kant/ramme (8px). De 8px kan
> naturligvis overskrives med CSS og tildeles en anden værdi.
>
> Endvidere er der en kalamitet med overflow og scroll. Det har jeg
> forsøgt at danne mig et overblik over, men jo flere fundne sider jeg
> kigger igennem, jo mere forvirret bliver jeg.
>
> Jeg mener at kunne fastslå, at <html>, som default antager
> "overflow:auto". Da <html> jo styrer hele browservinduet betyder det
> vel bare, at hvis der ikke er plads nok i højden, dannes der
> automatisk scrollbars i vinduet. Det må være så grundlæggende en ting,
> at jeg har vanskeligt ved at forestille mig, at nogen browser - også i
> ældre udgaver - ikke opfører sig sådan.
>
> Det anbefales flere steder (nogle angiveligt i forhold til IE, andre
> at det skulle være af hensyn til FF) at sætte følgende:
>
> html { overflow-y: scroll; }
>
> - hvilket Jørgen Farum Jensen også nævnte for nyligt. Det forstår jeg
> simpelthen ikke og min fantasi rækker ikke til at konstruere et
> eksempel, hvor jeg kan teste det.
>
> <html> og <body> er block-level elementer og har et indbyrdes
> parent/child-forhold. Har det noget at gøre med, at <body> derfor
> arver "overflow:auto"? Og hvad er problemet? Opfører "overflow:auto"
> sig ikke altid som ønsket/forventet?
>
> Bortset fra ovenstående, er der så nogen der kan komme i tanker om
> noget man kan/skal manipulere med i <html>?
>
> Og ja ... jeg ved naturligvis godt, at <html> indeholder
> <head></head>, men det er jo en helt anden sag.
HTML, XHTML, XML - der har været diskuteret en del.
<html>
<head>
...
</head>
<body>
...
</body>
</html>
<head> indeholder title , meta, andre referancer.
<body> indeholder indholdet af siden.
<html> elementet er blot det der samler de to.
SGML kræver at der kun er eet "element" i dokumentet. HTML, XHTML, og
XML er afarter af SGML. Derfor <html> tagget. Det er helt enkelt en
wrapper for <head> og <body>.
<html> og <head> med indhold, har ikke nogen CSS, fordi de ikke har
nogen repræsentation på skærmen. Det er kun <body> (med indhold) der
har det.
Der er så, som du har opdaget, nogen "quirks", som egentlig fortaber
sig i fortiden, og uenighed browserfabrikanter imellem, om tolkning, og
derfor kan visse ting sættes i CSS i <html>, men bør IMHO så vidt
muligt undgås - fabrikanterne er stadig ikke enige om tolkningen.
Et af disse "quirks" er scrollbaren i FF der ikke er der, når den ikke
skal bruges - hvilket kan virke som at billedet rykker, når den
vises/fjernes, og man kan bruge CSS på <html> til permanent at sætte en
lodret scrollbar i FF.
Men <html> har ikke nogen CSS! (html, head, meta, etc., har heller ikke
mulighed for at reagere på events)
[
http://www.w3.org/TR/html401/struct/global.html#edef-HTML - bemærk
fraværet af style! som du ellers ser, ved elementer der vises på
skærmen, som f.eks.
http://www.w3.org/TR/html401/struct/global.html#edef-DIV
]
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk