michi: height:100% + strict

Hallo, ist height:100% für Block-Elemente nicht erlaubt?
Wenn ich den folgenden Layer mit height:100% festlege ist es kein Problem:

<div style="width:120px;height:100%;background-color:#ff0000;">
test
</div>

Füge ich jedoch im <DOCTYPE>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
oder
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

ein, so wird die Höhe nur noch vom Inhalt bestimmt.

Nun heißt es doch
"Specifies a percentage height. The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), the value is interpreted like 'auto'."
Aber <body> hat doch auch eine Höhe von 100%. Also müsste es doch funktionieren, oder?
Weiß jemand Rat?

Michi

  1. Halli,

    Nun heißt es doch
    "Specifies a percentage height. The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), the value is interpreted like 'auto'."
    Aber <body> hat doch auch eine Höhe von 100%. Also müsste es doch funktionieren, oder?

    hast Du body explizit auf 100% gesetzt? Oder hoffst Du nur, daß es 100% Höhe hat?
    Und hast Du html auch explizit auf 100% gesetzt? Oder hoffst Du nur, daß es 100% Höhe hat?

    cu,
    Robert

    1. Ich habe <body> auf height:100% gesetzt und eine Hintergrundfarbe angegeben. Die hat auch das gesammte Browserfenster ausgefüllt, sodass ich davon ausgehe, dass <body> eine Höhe von 100% hat. Für <html> habe ich keine Höhe angegeben, das müsste ich heute nachmittag testen. (Habe hier keine Möglichkeit)

      Michi

      1. Ich habe <body> auf height:100% gesetzt und eine Hintergrundfarbe angegeben. Die hat auch das gesammte Browserfenster ausgefüllt, sodass ich davon ausgehe, dass <body> eine Höhe von 100% hat. Für <html> habe ich keine Höhe angegeben, das müsste ich heute nachmittag testen. (Habe hier keine Möglichkeit)

        Michi

        Hi,

        ich hatte mal das gleiche Problem. Wenn ich mich recht erinnere, war es so:

        1. Das Problem trat nur im Mozilla auf, nicht im IE

        2. Es trat nur auf, wenn die DTD in der langen Version geschrieben wurde, also so wie du, die kurze Variante hat es behoben:
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        (hat nichts mit strict/transitional zu tun)

        3. <html style="height:100%"> löst das Problem in diesem Fall grundsätzlich, weil Mozilla die Gesamthöhe des html-Bereichs nicht als die Gesamthöhe des Browserfensters sieht (so wie IE) sondern nur als das, was tatsächlich gebraucht wird, um sämtliche Inhalte unterzunringen, in deinem Fall also nur eine Zeile mit etwas margin. Computerlogik eben - hat wie immer recht, auch wenn's doof erscheint.

        Grüße,
        Nils

        1. Hallo,

          Computerlogik eben - hat wie immer recht, auch wenn's doof erscheint.

          warum ist dann beim Mozilla die Hintergrundfarbe über den ganzen
          Bereich vorhanden?

          Etwa eine Eigenschaft vorsorglicher overflow des Body, der dann
          die bg-color erhält?

          Grüsse

          Cxy23

          1. warum ist dann beim Mozilla die Hintergrundfarbe über den ganzen
            Bereich vorhanden?

            Etwa eine Eigenschaft vorsorglicher overflow des Body, der dann
            die bg-color erhält?

            Hi,
            wie meinst du? In dem Beispiel dieses threads ist das ja nicht der Fall - hast du Beispiel-code?
            Grüße,
            Nils

            1. Hallo,

              wie meinst du? In dem Beispiel dieses threads ist das ja nicht der Fall - hast du Beispiel-code?

              hatte ich vielleicht falsch verstanden.

              Erstmal ein ähnliches Beispiel:

              <style>
              body{ background-color:silver}
              #bt{position:absolute;bottom:0px;}
              </style>
              <body>
              <div id=bt>xx</div>
              <img src=xxx.gif width=2 height=2000>
              </body>

              ohne zusätzliches Container Div oder height:auto 100% o.ä. landet
              das Div am Window und nicht am body, trotzdem ist alles grau.

              Grüsse

              Cyx23

              1. Also ich habe es nun getestet.
                Der IE 6 möchte height:100% im <body>-Tag haben und der
                Mozilla im <html>-Tag. In beiden eingetragen funktioniert es nun mit dem IE ab 5.0, Opera ab 6.0, Netscape ab 6.0 und dem Mozilla ab Version 1.

                Gruß
                Michi

                1. Hallo,

                  Also ich habe es nun getestet.
                  Der IE 6 möchte height:100% im <body>-Tag haben und der
                  Mozilla im <html>-Tag. In beiden eingetragen funktioniert es nun mit dem IE ab 5.0, Opera ab 6.0, Netscape ab 6.0 und dem Mozilla ab Version 1.

                  ja, danke, interessant, ist wohl die ähnliche Wirkung wie mit einem
                  Containerdiv, aber es ist doch -Beispiel mit img und body- so dass
                  wenn bottom die Windowkante trifft, der Body nur so gross wie das
                  Window ist. Also wird das <img height=2000> als 'overflow visible'
                  angezeigt, sobald man aus dem Window scrollt.
                  Wenn aber Elemente normalerweise _nur_ bis zu ihrer Grösse, hier
                  gleich Window, Hintergrundfarbe haben, stimmt doch etwas nicht
                  wenn das ganze html die Farbe des Body bekommt.
                  Ähnliches kann man wohl auch bei der Abfrage der Grösse per
                  Script feststellen, etwa wenn der Body kleiner sein soll als
                  das Window, hatte ich auch schonmal probiert (schon länger her,
                  weiss d. Code nicht auswendig).
                  Jedenfalls hätte ich erwartet dass nur das Window die graue Farbe
                  des Body erhält, wenn es ganz genau zugeht.

                  Grüsse

                  Cyx23

                2. Hallo nochmal,

                  Also ich habe es nun getestet.
                  Der IE 6 möchte height:100% im <body>-Tag haben und der

                  du hast gesteted dass bei Doctype strict der Body beim
                  Window abgeschnitten wird, oder dass bottom tatsächlich
                  die 2000px trifft, oder meintest du gar nicht das Bsp.:

                  body{ background-color:silver}
                  #bt{position:absolute;bottom:0px;}
                  </style>
                  <body>
                  <div id=bt>xx</div>
                  <img src=xxx.gif width=2 height=2000>
                  </body>

                  sondern dein Ausgangsposting?

                  Grüsse

                  Cyx23

  2. Halli,

    Füge ich jedoch im <DOCTYPE>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    oder
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    ein, so wird die Höhe nur noch vom Inhalt bestimmt.

    Nachtrag:
    Welchen Browser benutzt Du?
    Einen, der CSS einigermaßen korrekt umsetzt oder den IE?

    cu,
    Robert

    1. Nachtrag:
      Welchen Browser benutzt Du?
      Einen, der CSS einigermaßen korrekt umsetzt oder den IE?

      Habe es mit IE 6, den Geckos und Opera 6
      getestet. Bei allen gleich. Das Verhalten scheint also CSS-Standard zu sein.

      michi