nixxon: Transparentes Frameset

Hallo!

meine index.php seite soll ein logo (flash), und ein transparentes frameset darstellen.

Was das logo angeht, gibt es keine probleme. Erwähne es nur weil ich nicht weiß wo mein fehler liegt.

Mein Problem:
Das Frameset wird nicht dargestellt, zumindest sehe ich es nicht. Wenn ich jedoch einzelne iframes verwende werden sie auch dargestellt, sogar transparent.

Meine Frage(n):
1. Wie nennt man den oberen Part einer webseite?

beispiel:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//DE"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

2. Wo kann ich nachlesen/lernen wie und was da angegeben werden muss?

Quelltext meiner index.php :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//DE"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">

<head>

<title> *** VerratIchNicht.de ***</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="screen" href="page.css" />

<style type="text/css">
 Body {background-color: #F1F8FF}
</style>
 <?php
  include 'fname.php';
 ?>
</head>
<body background="bgblue.jpg">
<p>
<!-- Das logo -->
    <left>
 <?php
  include 'logo.sl';
 ?>
    </left>
<p>
<p style="padding-left:50px;"> Photovoltaik / Solarsysteme </p>
<p><p>
<!-- Das Logo.End -->
<!-- Frameset -->
<frameset cols="30%,70%" allowtransparency="true" align="center">

<noframes>
        <p> Sie brauchen einen Browser, der Frames darstellen kann, um diese Seiten
mit ihren Inhalten wie geplant zu sehen. </p>
    </noframes>

<frame src="navigation.php" name="menu" />

<frameset rows="10%,90%">
        <frame src="top.php" name="top" />
        <frame src="welcome.php" name="screen" />
    </frameset>

</frameset>
<!-- Frameset.End -->
</body>
</html>

    1. Wie nennt man den oberen Part einer webseite?

    Header/Head, aber du meinst wohl die Doctype Info?

    1. Wo kann ich nachlesen/lernen wie und was da angegeben werden muss?

    Doctype? Kannste bei selfhtml finden oder google einfach mal danach.

    1. Doctype meine ich. Danke! Werd ich mal genauer studieren und evtl. meinen Fehler dort finden..

      Jedoch würde ich mich noch immer über lösungswege für meine nicht dargestelltes frameset freuen! ;)

  1. hallo,

    1. Wie nennt man den oberen Part einer webseite?

    Oberen Part. Manche reden auch von "Header". Kann man ernst nehmen, muß man aber nicht.

    1. Wo kann ich nachlesen/lernen wie und was da angegeben werden muss?

    Was hältst du von eoner gründlichen Lektüre von SELFHTML und vor allem dessen Framekapitel?

    Quelltext meiner index.php :

    Mit Verlaub: du hast da zwei Dinge noch nicht verstanden. Das erste ist, warum etwas PGP sein muß, wenn es lediglich um ein bißchen include geht, was den gewünschten Frameaufbau vermutlich sowieso stören würde. Das zweite ist, daß Framesets nun wirklich nicht so gebaut werden können, wie du das vorhast.

    <style type="text/css">
    Body {background-color: #F1F8FF}
    </style>

    Du willst ein framesrt bauen - in einem Frameset gibt es aber keinen "body", also ist auch jede Färbung dafür völlig unsinnig.

    <?php
      include 'fname.php';
    ?>
    </head>

    Was soll hier "includet" werden - noch innerhalb des Headers?

    <body background="bgblue.jpg">
    <p>

    Irgendwo soll hier ja ein Frameset folgen. Dann sind <body> und <p> verboten und gehören hier nicht hin.

    <left>

    Was, bitte, ist <left> für ein HTML-Element?

    <?php
      include 'logo.sl';
    ?>

    Was, bitte, ist "sl" für eine Dateinamensendung - bist du sicher, daß dein Server weiß, wie er damit umgehen soll? (es wäre allerdings wurscht, weil solche Murkeleien in einem künftigen Frameset eh Unsinn sind)

    <p><p>

    Bist du sicher, daß du solche Sachen wirklich haben willst?

    <frameset cols="30%,70%" allowtransparency="true" align="center">
        <noframes>

    Wenn du ein Frameset haben möchtest, gehört da als allererstes die Definition deiner Rahmen hin. Du beginnst aber mit "noframes". Dabei kannst du heute getrost davon ausgehen, daß so ziemlich jeder Browser mit Frames was anfangen kann - wenn denn dein HTML das hergibt. Dein HTML ist aber so gestaltet, daß da, wo du es notiert, gar kein Frameset mehr aufgerufen werden kann und darf. Kein Wunder, daß es kein Browser darstellen kann, nicht einmal der IE6.

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph,

      Was ich von einer Lektüre zu SELFHTML halte!?

      Was hältst du von eoner gründlichen Lektüre von SELFHTML und vor allem dessen Framekapitel?

      ja bitte, immer her damit!

      Mit Verlaub: du hast da zwei Dinge noch nicht verstanden. Das erste ist, warum etwas PHP sein muß, wenn es lediglich um ein bißchen include geht, was den gewünschten Frameaufbau vermutlich sowieso stören würde. Das zweite ist, daß Framesets nun wirklich nicht so gebaut werden können, wie du das vorhast.

      Danke für deine offenheit! Warum php? Weil ich gerne mit globals arbeiten würde (sind halt noch nich da weil ich es noch nicht verstanden hab :P ).

      <style type="text/css">
      Body {background-color: #F1F8FF}
      </style>

      Du willst ein framesrt bauen - in einem Frameset gibt es aber keinen "body", also ist auch jede Färbung dafür völlig unsinnig.

      Das Frameset beginnt erst bei "<!-- Frameset -->". Was du da bemängelst ist meine hintergrundfarbe der index-seite.

      <?php
        include 'fname.php';
      ?>
      </head>

      Was soll hier "includet" werden - noch innerhalb des Headers?

      das ist der momentane "ersatz" für die noch nicht vorhandenen globals und enthält lediglich ein paar variablen.

      <body background="bgblue.jpg">
      <p>

      Irgendwo soll hier ja ein Frameset folgen. Dann sind <body> und <p> verboten und gehören hier nicht hin.

      aha! Danke

      <left>

      Was, bitte, ist <left> für ein HTML-Element?

      hab ich in irgendeiner "lektüre" gelesen, und richtet den inhalt links aus (in dem fall das logo). Und btw. es funktioniert! aber evtl hast du recht und ich sollte es per css ausrichten.

      <?php
        include 'logo.sl';
      ?>

      Was, bitte, ist "sl" für eine Dateinamensendung - bist du sicher, daß dein Server weiß, wie er damit umgehen soll? (es wäre allerdings wurscht, weil solche Murkeleien in einem künftigen Frameset eh Unsinn sind)

      meine eigene kreation! Schön, nicht!? ...Wollt einfach wissen ob es klappt und das tut es. Die Datei kommt natürlich irgendwann wieder weg.

      <p><p>

      Bist du sicher, daß du solche Sachen wirklich haben willst?

      sind das nicht einfach nur 2 zeilenumbrüche?

      ... Dein HTML ist aber so gestaltet, daß da, wo du es notiert, gar kein Frameset mehr aufgerufen werden kann und darf. Kein Wunder, daß es kein Browser darstellen kann, nicht einmal der IE6.

      aha! Warum kann und darf es nicht aufgerufen werden? Weil ich es im body stehen habe?

      gruß
      nixxon

      1. hallo,

        Was ich von einer Lektüre zu SELFHTML halte!?

        Nicht "zu", sondern "in" - speziell in http://de.selfhtml.org/html/frames/definieren.htm

        Warum php? Weil ich gerne mit globals arbeiten würde (sind halt noch nich da weil ich es noch nicht verstanden hab :P )

        Was verstehst du unter "globals"? Und was hat das mit deinem gewünschten Frameset zu tun?

        <style type="text/css">
        Body {background-color: #F1F8FF}
        </style>
        Du willst ein framesrt bauen - in einem Frameset gibt es aber keinen "body", also ist auch jede Färbung dafür völlig unsinnig.
        Das Frameset beginnt erst bei "<!-- Frameset -->". Was du da bemängelst ist meine hintergrundfarbe der index-seite.

        Deine Indexseite ist entweder eine "Seite" (mit <body> und allem anderen Firlefanz) oder es ist ein Frameset - ohne <body>. Es gibt kein Zwischending. Und es ist völlig unnötig, bei deinen Anforderungen das Frameset per PHP aufrufen zu lassen. Das ist ein Stückchen HTML pur, und sonst nichts.

        <?php
          include 'fname.php';
        ?>
        </head>
        Was soll hier "includet" werden - noch innerhalb des Headers?
        das ist der momentane "ersatz" für die noch nicht vorhandenen globals und enthält lediglich ein paar variablen.

        Laß es weg - bringt dir für dein Frameset eh nix.

        <left>
        Was, bitte, ist <left> für ein HTML-Element?
        hab ich in irgendeiner "lektüre" gelesen, und richtet den inhalt links aus (in dem fall das logo).

        Nein, das tut es nicht. Es ist ganz einfach Unsinn. Ein solches HTML-Element existiert nicht.

        Und btw. es funktioniert! aber evtl hast du recht und ich sollte es per css ausrichten.

        Da kann nichts "funktionieren". Was nicht existiert, kann weder funktionieren noch mit CSS ausgerichtet werden.

        <p><p>
        Bist du sicher, daß du solche Sachen wirklich haben willst?
        sind das nicht einfach nur 2 zeilenumbrüche?

        Nein, es ist invalides HTML. <p> kann nicht verschachtelt werden. Zeilenumbrüche sehen anders aus.

        ... Dein HTML ist aber so gestaltet, daß da, wo du es notiert, gar kein Frameset mehr aufgerufen werden kann und darf. Kein Wunder, daß es kein Browser darstellen kann, nicht einmal der IE6.
        aha! Warum kann und darf es nicht aufgerufen werden? Weil ich es im body stehen habe?

        Richtig.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Nicht "zu", sondern "in" - speziell in http://de.selfhtml.org/html/frames/definieren.htm

          hups - aber danke für den link. Gelesen, verstanden, angewandt, und funktioniert nun. Mein problem lag/liegt darin, dass ich noch nicht verstanden habe was header, body und footer (wenns den denn gibt) für einen "sinn" haben. Hab meine Index-seite umbeschrieben und nun klappt es mehr oder weniger :)

          Was verstehst du unter "globals"? Und was hat das mit deinem gewünschten Frameset zu tun?

          unter globals verstehe ich variablen, bzw. werte die im ... cache (?) hinterlegt werden. Also werte, die bei dem klick auf einen link nicht verloren gehen, und dem rechner weiterhin zur verfügung stehen.

          Du willst ein framesrt bauen - in einem Frameset gibt es aber keinen "body", also ist auch jede Färbung dafür völlig unsinnig.

          hab ich eben gemerkt! :(

          Deine Indexseite ist entweder eine "Seite" (mit <body> und allem anderen Firlefanz) oder es ist ein Frameset - ohne <body>. Es gibt kein Zwischending. Und es ist völlig unnötig, bei deinen Anforderungen das Frameset per PHP aufrufen zu lassen. Das ist ein Stückchen HTML pur, und sonst nichts.

          ok, ok.. das hab ich jetzt verstanden, glaub ich. Dies gilt aber nicht für iframes, wenn ich das richtig sehe!?

          Was, bitte, ist <left> für ein HTML-Element?
          hab ich in irgendeiner "lektüre" gelesen, und richtet den inhalt links aus (in dem fall das logo).

          Nein, das tut es nicht. Es ist ganz einfach Unsinn. Ein solches HTML-Element existiert nicht.

          stimmt! Geht auch ohne. SwishMax hatte das erstellt, und ist ein teil des flash-script. Schätz ich..

          Und btw. es funktioniert! aber evtl hast du recht und ich sollte es per css ausrichten.

          Da kann nichts "funktionieren". Was nicht existiert, kann weder funktionieren noch mit CSS ausgerichtet werden.

          hehe... ja, ok. Es ist weg

          <p><p>
          Nein, es ist invalides HTML. <p> kann nicht verschachtelt werden. Zeilenumbrüche sehen anders aus.

          Danke für das raussuchen! Auch das hab ich gelesen und ab sofort verwende ich für zeilenumbrüche nur noch "<br>"!

          gruß
          nixxon

  2. @@nixxon:

    <style type="text/css">
    Body {background-color: #F1F8FF}
    </style>

    Die <http://de.selfhtml.org/html/xhtml/unterschiede.htm@title=Unterschiede zwischen XHTML und HTML> kennst du? XHTML ist case-sensitiv; sollte es einmal als XML verarbeitet werden, matcht der Selektor 'Body' nicht auf ein 'body'-Element.

    Aber wie Christoph schon anmerkte, hat ein 'body'-Element dort nichts zu suchen:
      <!ELEMENT html (head, frameset)> [DTD XHTML 1.0 Frameset]
    Das 'html'-Element enthält genau ein 'head'- und ein 'frameset'-Element (in dieser Reihenfolge), sonst nichts.

    (Ein 'body'-Element kommt im 'noframes'-Element vor, sofern dieses vorhanden ist:
      <!ELEMENT noframes (body)> [ebenda])

    Den Hintergrund des Framsets setzt du natürlich – wie alle Darstellungsangaben – mit CSS:
      frameset {background-color: #F1F8FF}

    Auch einen anderen Unterschied sprach Christoph bereichts an: In XHTML sind End-Tags nicht optional. Du solltest deinen Quelltext von einem Validator [http://validator.w3.org/, http://www.validome.org/] überprüfen lassen.

    Aber wozu zum Geier verwendest du überhaupt ein Frameset? Zum Aufteilen _einer_ Webseite? Dafür sind Framesets das falsche Mittel. Sie bereiten Nutzern haufenweise Probleme und sind deshalb out!

    Du verwendest sowieso schon PHP; damit kannst du auch Inhalte aus anderen Dateien einbinden [FAQ: Quelltext auslagern]: [link:http://de.php.net/manual/de/function.readfile.php@title=readfile()].

    Live long and prosper,
    Gunnar

    --
    „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)