Sabine: <h1> in <p>

Hallo Forumer und schönen Montag,

sagt, kann ich etwa in einen <p> kein <h1 ...> packen? Netscape 4.7 zeigt dann ständig einen falschen font. Obwohl ich in sämtlichen Elementen,... denselben font in einer css-Datei angegeben habe.

Beispiel:

<p><h2>Überschrift Sowieso</h2>
Ein oder zwei Zeilen Erklärung dazu</p>

Danke,
Sabine

  1. Moin

    sagt, kann ich etwa in einen <p> kein <h1 ...> packen? Netscape 4.7 zeigt dann ständig einen falschen font. Obwohl ich in sämtlichen Elementen,... denselben font in einer css-Datei angegeben habe.

    Welchen Sinn macht es, Textabsätze zu verschachteln? Überschriften sind ja letztlich auch nur <p>s, die im Browser in der Regel nur etwas größer, fetter etc. dargestellt werden.
    Daß das dem Netscape komisch vorkommt, kann ich durchaus nachvollziehen. Wenn ich ein Browser wäre, würde ich auch nur mit dem Kopf (bzw. mit der Kopfzeile) schütteln.

    <p><h2>Überschrift Sowieso</h2>
    Ein oder zwei Zeilen Erklärung dazu</p>

    Und warum nicht so:
    <h2>Überschrift Sowieso</h2>
    <p>Ein oder zwei Zeilen Erklärung dazu</p>

    Thomas J.

  2. Hallo,

    das geht nicht, weil sowohl <p></p> als auch <hx></hx>
    Block-level Elemente sind und diese dürfen nicht verschachtelt werden. D.h. keine Überschriften innerhalb von <p></p> und umgekehrt.

    Gruß Markus

    PS: http://www.w3.org/TR/html4/struct/text.html#h-9.3.1

    1. Hallo,

      das geht nicht, weil sowohl <p></p> als auch <hx></hx>
      Block-level Elemente sind und diese dürfen nicht verschachtelt werden. D.h. keine Überschriften innerhalb von <p></p> und umgekehrt.

      Das ist Unsinn. Block-level Elemente kann man verschachteln (z.B. div).

      PS: http://www.w3.org/TR/html4/struct/text.html#h-9.3.1

      Dort steht das p inline Element ist und Inline Elemente keine Block-level Elemente enthalten dürfen.

      Gruß,
      Henning

      1. Hallo!

        Okay! Recht herzlichen Dank euch allen! Ich werde mir also eine andere Methode einfallen lassen müssen!

        LG, Sabine

        das geht nicht, weil sowohl <p></p> als auch <hx></hx>
        Block-level Elemente sind und diese dürfen nicht verschachtelt werden. D.h. keine Überschriften innerhalb von <p></p> und umgekehrt.

        Das ist Unsinn. Block-level Elemente kann man verschachteln (z.B. div).

        PS: http://www.w3.org/TR/html4/struct/text.html#h-9.3.1

        Dort steht das p inline Element ist und Inline Elemente keine Block-level Elemente enthalten dürfen.

        Gruß,
        Henning

        1. Hallo!

          Okay! Recht herzlichen Dank euch allen! Ich werde mir also eine andere Methode einfallen lassen müssen!

          LG, Sabine

          Warum nicht, wie auch schon unten beschrieben
          <h2>Laber</h2>
          <p>Schwafel</p>
          ?

          Tschüß, Auge

          1. Hi,

            Okay! Recht herzlichen Dank euch allen! Ich werde mir also eine andere Methode einfallen lassen müssen!

            Warum nicht, wie auch schon unten beschrieben
            <h2>Laber</h2>
            <p>Schwafel</p>

            Das ist nicht günstig, weil ich zwischen der 'Überschriften' und der kurzen Beschreibung nicht mehr Freiraum als einen normalen Umbruch haben möchte. Könnte natürlich eine class zusätzlich für <p> schreiben. Mag ich aber nicht. Hab also folgendes getan:

            <p><b>Überschrift</b><br>
            Erklärung</p>

            Ist das okay oder etwa nicht W3C-konform?

            Danke,
            Sabine

            1. Morgähn

              <p><b>Überschrift</b><br>
              Erklärung</p>

              Ist das okay oder etwa nicht W3C-konform?

              Doch, alles bestens.

              Thomas J.

            2. Hallo Sabine,

              <p><b>Überschrift</b><br>
              Erklärung</p>

              Das ist syntaktisch zwar in Ordnung aber es widerspricht der logischen Struktur von HTML. Überschriften werden z.B. per <h1> als ebensolche gekennzeichnet. In einem grafischen Browser werden sie per Fettdruck hervorgehoben, in einem Text-Browser wie Lynx durch eine andere Einrückung gegenüber dem übrigen Text, in einem Screenreader ("Vorleser" für Blinde) durch eine andere Betonung. Diese logische Struktur zerstörst Du, indem Du nicht das Element benutzt, das für Überschriften vorgesehen ist.
              Übrigens wird auch so manche Suchmaschine Deinen Text völlig anders bewerten, wenn sie eine oder mehrere Überschriften findet. Deine jetzige Konstruktion ist für eine Suchmaschine stinknormaler Text. Wenn dagegen die Überschrift auch als Überschrift gekennzeichnet ist, dann weiß auch die Suchmaschine das hier etwas wichtiges steht und wird es entsprechend honorieren.

              Viele Grüße
              Carsten

      2. Hallo

        Das ist Unsinn. Block-level Elemente kann man verschachteln (z.B. div).

        PS: http://www.w3.org/TR/html4/struct/text.html#h-9.3.1

        Dort steht das p inline Element ist und Inline Elemente keine Block-level Elemente enthalten dürfen.

        Wenn du schon richtigstellst, dann Richtig. Dort steht,
        daß <p> keine Blockelemente aufnehmen darf.

        Bei http://www.w3.org/TR/html4/sgml/dtd.html#flow steht neckischerweise:

        <!ENTITY % block
             "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
              BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

        Ob die schlußendlich wissen, was sie tun?

        Tschüß, Auge

        1. Hallo,

          Wenn du schon richtigstellst, dann Richtig. Dort steht,
          daß <p> keine Blockelemente aufnehmen darf.

          Das habe ich ja auch gesagt, falsch wäre höchstens das <p> kein inline Element ist. Aber wenn es ein Blockelement wäre mußte es doch Blockelemente enthalten dürfen? Was ist denn <p> jetzt eigentlich?

          Bei http://www.w3.org/TR/html4/sgml/dtd.html#flow steht neckischerweise:

          <!ENTITY % block
               "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
                BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">

          Ob die schlußendlich wissen, was sie tun?

          Naja wer seine Webseiten eben gegen sgml validieren will.

          Tschüß, Auge

          Gruß,
          Henning

          1. Hallo,

            Wenn du schon richtigstellst, dann Richtig. Dort steht,
            daß <p> keine Blockelemente aufnehmen darf.

            Das habe ich ja auch gesagt, falsch wäre höchstens das <p> kein inline Element ist.

            Du sagtest, daß Inlineelemente, wozu du aus Versehen <p> zähltest,
            keine Blockelemente enthalten dürfen. Seis drum...

            Aber wenn es ein Blockelement wäre mußte es doch Blockelemente enthalten dürfen? Was ist denn <p> jetzt eigentlich?

            <p> ist Blockelement, wie aber bei anderen Elementen auch,
            ist festgelegt, welche anderen tags innerhalb des Elementes
            notiert werden dürfen. In <p> halt nur Inlineelemente.

            Naja wer seine Webseiten eben gegen sgml validieren will.

            Ich glaub' nicht, daß das <p> bei xml eine andere Bedeutung hat.

            Tschüß, Auge

            1. Hallo,

              Naja wer seine Webseiten eben gegen sgml validieren will.

              Ich glaub' nicht, daß das <p> bei xml eine andere Bedeutung hat.

              Häh? Wie kommst Du jetzt auf XML?
              Sowohl HTML als auch XML sind SGML-Sprachen.

              Und ganz abgesehen davon: p hat bei XML natürlich eine ganz andere Bedeutung als bei HTML.
              p hat bei XML nämlich erstmal gar keine Bedeutung.

              Andreas

              1. Hallo

                Naja wer seine Webseiten eben gegen sgml validieren will.

                Ich glaub' nicht, daß das <p> bei xml eine andere Bedeutung hat.

                Ja, vielleicht habe ich mich etwas mißverständlich ausgedrückt.

                Häh? Wie kommst Du jetzt auf XML?
                Sowohl HTML als auch XML sind SGML-Sprachen.

                Jein! XML ist aus SGML entwickelt worden (ja), erfüllt aber in etwa
                die gleiche Funktion wie SGML (nein (parallele Anwendung)).

                Und ganz abgesehen davon: p hat bei XML natürlich eine ganz andere Bedeutung als bei HTML.
                p hat bei XML nämlich erstmal gar keine Bedeutung.

                Wohl wahr. Mir ging's ja auch um den herablassenden Satz (obenstehend),
                und den "Nicht"-Unterschied zwischen SGML- und XML geparsten (X)HTML
                im Falle des <p>-tags..

                Tschüß, Auge

          2. Hallo,

            Was ist denn <p> jetzt eigentlich?

            p ist ein blocklevel-Element, das nur inline-Elemente enthalten darf.

            Es gibt blocklevel-Elemente, die dürfen nur blocklevel-elemente enthalten (z.B. form)
            Es gibt blocklevel-Elemente, die dürfen nur inline-Elemente enthalten (z.B. p)
            Es gibt blocklevel-Elemente, die dürfen sowohl inline- als auch blocklevel-Elemente enthalten (z.B. div)

            Inline-Elemente dürfen aber nie blocklevel-Elemente enthalten.

            Andreas

            1. Hallo an Andreas und Auge,

              p ist ein blocklevel-Element, das nur inline-Elemente enthalten darf.

              Danke für die Aufklärung.

              Es gibt blocklevel-Elemente, die dürfen nur blocklevel-elemente enthalten (z.B. form)

              Jetzt verstehe ich endlich, warum es ein Problem ist input einfach so in ein form zu setzen. Bisher dachte ich immer Block-level Element = Block-level Element. Man sollte sich doch wirklich mal die Doctypes genauer anschauen.

              Inline-Elemente dürfen aber nie blocklevel-Elemente enthalten.

              Andreas

              Gruss,
              Henning

      3. Hallo,

        PS: http://www.w3.org/TR/html4/struct/text.html#h-9.3.1

        Dort steht das p inline Element ist und Inline Elemente keine Block-level Elemente enthalten dürfen.

        Dort steht
        <!ELEMENT P - O (%inline;)*            -- paragraph -->
        d. h. das Inhaltsmodell von P ist inline-Content. P selbst ist natuerlich ein Blockelement.

        MfG, Thomas

  3. hi

    <p><h2>Überschrift Sowieso</h2>
    Ein oder zwei Zeilen Erklärung dazu

    Das End-Tag ist ja nicht vorgeschrieben. Jetzt wird deutlicher, wieso das nicht gehen kann...

    Der Text hinter dem <h2> steht also aus Browsersich in gar keinem Element..

    Grüße aus Bleckede

    Kai