Announcement

Collapse
No announcement yet.

Div-Container

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Div-Container

    Hi,

    ich bin seit ein paar Tagen am basteln eines CSS Designs...
    So soll es aussehen:



    Das Design soll die gesamte Seite ausfüllen - jeder Berecih wird mit 20px Freibereich getrennt. Wenn ich aber im Bereich main mehr Text habe, als der Bereich auf einer Seite hat, soll er einfach vergrößert werden. da wäre es aber optimal, wenn ich dann die höhe von left und main immer gleich hätte.

    Der Inhalt meiner css und html Datei:

    Code:
    html, body, #container {
    height:100%;
    margin: 0;
    padding: 0;
    background-color:#F1FCE0;
    font-family:"Comic Sans MS";
    font-size:14px;
    }
    #container {
    padding:20px;
    width:auto !important;
    width: 100%;
    min-height:100%;
    height:auto !important;
    height:100%;
    }
    #header {
    background-color:#FFFFFF;
    border:1px solid #43D364;
    width:auto !important;
    width: 100%;
    height:100px !important;
    height:98px;
    }
    #left {
    float:left;
    font-size:16px;
    margin-top:20px;
    color: #43D364;
    background-color:#FFFFFF;
    width:100px !important;
    width:98px;
    height: auto !important;
    height: 100%;
    border: 1px solid #43D364;
    }
    #main {
    margin-top:20px;
    background-color:#FFFFFF;
    border: 1px solid #43D364;
    text-align: left;
    padding:30px;
    margin-left: 120px;
    width: auto !important;
    width: 100%;
    height: auto !important;
    height: 100%;
    }
    HTML Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Der Sinn des Lebens</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    	<div id="container">
    		<div id="header">Das ist der Header</div>
    		<div id="left" align="center">linker Bereich</div>
    		<div id="main" align="center">Hauptbereich mit eventuell viel Text</div>
    	</div>
    </body>
    </html>

  • #2
    Und wie lautet die Frage?

    Comment


    • #3
      die höhe des divs left und main sollte im normalfall so hoch sein, wie das browserfenster. wenn der inhalt aber mehr höhe benötigt, soll die höhe dynamisch größer werden.

      wie bekomme ich das hin? was habe ich falsch gemacht?

      ich habs mit diesen !important parametern versucht, aber auch hier kein wünschenswertes ergebnis erhalten...

      bitte um hilfe...

      DANKE!

      Comment


      • #4
        wie bekomme ich das hin?
        Am einfachsten geht das, wenn Du ein Hintergrundbild machst, das den Nutzer vorgaukelt, der linke Bereich ginge bis zum Ende der Seite. Der Theorie nach muss der Bereich 100% hoch sein, wobei sich die 100% immer auf die Größe des Elternelements beziehen. Aber damit hat, soweit ich mich erinnern kann, ein gewisser Browser seine Probleme.

        was habe ich falsch gemacht?
        Da könnte man einiges nennen.
        Der linke Bereich kann natürlich nicht 100% hoch sein, da da ja noch der header oben drüber ist. Wenn der in px angegeben ist, kannst Du aber keine Höhe angeben, die "der Rest" bedeutet, weil 100%-100px geht nicht.
        Wenn diese doppelte Angabe der Höhe mit !important nicht grad irgendein IE-Hack ist (ich bin bisher immer ohne ausgekommen), dann ist das natürlich Käse, weil die zweite Definition von height die erste überschreibt. height:auto in einem Block-Element heißt außerdem "nur so hoch, wie der Inhalt ist".
        Für Dein Problem empfehle ich den "Trick" mit dem Hintergrundbild.

        Was man sonst noch als "falsch" bezeichnen kann?

        - width:100% in einem Block-Element ist unnötig, das ist immer 100% breit. Zusammen mit margin könnte das auch unschöne Effekte haben, weil der Container dann aus dem Fenster rausragt.
        - In der font-family steht nur ein - bei mir unbekannter - Font. Hier muss noch ein allgemeiner Fonttyp rein, sowas wie "sans-serif".
        - IDs/Klassen sollte man nicht mit Namen versehen, die sich aufs Layout beziehen, sondern auf den Inhalt. Sonst ist das keine saubere Trennung von Inhalt und Layout und Du tust Dich schwer, wenn Du mal "left" und "main" vertauschen willst. Dann hast Du einen Container "left", der auf der rechten Seite steht. Oder Du änderst den Namen in allen HTML-Files, das ist aber nicht Sinn der Sache.
        - Denke immer daran, dass divs kein Allheilmittel sind. Sie gruppieren lediglich mehrere Elemente zur gemeinsamen Formatierung. Dein div "container" ist also völlig überflüssig. Der Rest ist schwer zu bewerten, weil ja noch kein Inhalt da ist. Für eine erfolgreiche Anwendung von HTML mit CSS mit Trennung von Inhalt und Layout ziehe ich es vor, erst den Inhalt zu nehmen, den semantisch auszuzeichnen und erst dann das Layout zu machen. Das birgt weniger Fehler und führt idR nicht zu div-Suppe.

        Zu CSS-Layouts findest Du auch bei SelfHTML etwas: http://de.selfhtml.org/css/layouts/index.htm

        Gruß,
        -Efchen

        Comment


        • #5
          Hi,

          danke für deine ausführliche beschreibung.
          ok das mit dem hintergrundbild habe ich mir auch schon überlegt. werde ich bei gelegenheit mal einbauen...

          100%-100px wäre aber schon ein nettes feature :-)

          !important ist ein ie hack, da der ie7 anders reagiert als andere browser.

          - IDs/Klassen sollte man nicht mit Namen versehen
          das hab ich nicht ganz verstanden. wie würdest du sie denn nennen? bei meinem layout wird left immer links sein und main immer der hauptbereich für den inhalt sein...

          im prinzip habe ich ja bereits eine fertige homepage und jetzt mache ich das design. nur da habe ich immer wieder meine probleme. hatte bisher nur tabellen layouts und davor framesets. aber anscheinend gibt es kein allheilmittel für ein schönes design. ist überall ein workaround nötig :-(

          Comment


          • #6
            Originally posted by schnurzli View Post
            100%-100px wäre aber schon ein nettes feature :-)
            Ja, durchaus, aber zumindest im Moment ist es nicht verfügbar :-)

            das hab ich nicht ganz verstanden. wie würdest du sie denn nennen? bei meinem layout wird left immer links sein und main immer der hauptbereich für den inhalt sein...
            "main" ist in Ordnung. Das beschreibt den Inhalt. "left" ist schlecht.
            Bei einem ausgereiften CSS-Layout trennt man ja strikt Inhalt von Layout. In die HTML-Datei kommt nur die Struktur des Inhalts, keine Inline-Styles, nur der Verweis auf ein Stylesheet. Keine Verwendung von deprecated Tags und solchen, die nicht die Struktur des Inhalts beschreiben, wie <b>, <i>, <u> oder andere. Kein Missbrauch von Tabellen zu Layoutzwecken.
            Das hat den Vorteil, dass das Aussehen rein vom Stylesheet bestimmt wird. Eine Änderung am Layout muss nur noch im Stylesheet, also in einer Datei gemacht werden. Nur die eine Datei wird geändert und das Aussehen aller Seiten ändert sich! Ein Redesign kann somit nur ein paar Minuten dauern.
            Im Sinne der Trennung von Inhalt und Layout vermeidet man auch, seinen IDs und Klassen Namen zu geben, die auf das Layout schließen lassen. Wenn Du eines Tages das Layout ändern willst, könnte es ja sein, dass Du Dein Menü von links nach rechts packen willst. Das wäre nur eine Änderung: float:left wird zu float:right. Wow. Neues Layout in nur 10 Sekunden! Aber jetzt hättest Du einen Bereich, der auf der rechten Seite zu finden ist, aber "left" heißt. Super! :-( Du kannst mit dem sinnlosen Namen weiter leben, oder Du änderst ihn in allen Dateien in "right" ab. Leider stellst Du fest, dass Deine Site mittlerweile 3 Millionen Seiten umfasst...tja, gute Nacht! ;-) Deswegen wäre es z.B. sinnvoller, den Bereich "navi", "Sidebar" o.ä. zu nennen.

            im prinzip habe ich ja bereits eine fertige homepage und jetzt mache ich das design. nur da habe ich immer wieder meine probleme. hatte bisher nur tabellen layouts und davor framesets.
            Da rollen sich mir die Zehnägel auf :-)
            Aber um eine perfekte CSS-Site zu bekommen, empfehle ich, alles von Grund auf neu zu machen, sonst wird meistens nur eine div-Suppe daraus. Und außerdem werden dann alte Gewohnheiten nicht abgelegt. Mit Tabellenlayouts ist man so eine Site ganz anders angegangen, viel komplizierter. Mit CSS wird das alles in logische Teile aufgeteilt (Trennung von Inhalt und Layout), es wird alles einfacher. Aber nur, wenn man sich von der altbackenen Arbeitsweise löst.

            aber anscheinend gibt es kein allheilmittel für ein schönes design. ist überall ein workaround nötig :-(
            Schönheit liegt im Auge des Betrachters. Tabellen sind auch nur ein Workaround, aber ein ziemlich kompliziertes. Echte Workarounds sind eigentlich nur nötig, wenn man nicht flexibel ist und sein Design nicht etwas anpassen will.

            Immerhin muss man bei Websites ja auch bedenken, dass Millionen von Besuchern Millionen von verschiedenen Einstellungen mit sich bringen. Unterschiedliche Browser, verschiedene Betriebssysteme, der eine hat JavaScript aktiviert, der andere nicht, einer kommt mit nem PDA bei 200x320px Fenstergröße, der andere hat sein Browserfenster maximiert bei einer Auflösung von 1600x1280, der dritte wiederum hat zwar eine noch größere Auflösung, hat sein Browserfenster aber nur auf 772x961px aufgezogen. Der eine hat also 16:10-Format, ein anderer 6,274:11,993. Flexibilität ist also wichtig. Und Websites, die in allen Browsern gleich aussehen, sind eh ein Ding der Unmöglichkeit. Wichtig ist die Nutzbarkeit. Und die 100% für wirklich alle Browser, also auch Netscape 0.8 oder Mosaic oder Lynx, oder Vorlesebrowser, zu erreichen, das ist mit CSS endlich möglich, mit Tabellenlayouts ist das unmöglich.

            Naja, schweife ich ab ... ? ;-)

            Gruß,
            -Efchen

            Comment


            • #7
              Hallo schnurzli,

              ich kann Efchen nur zustimmen. Wenn du deine Seite umbauen möchtest, dann trenn dich von dem Tabellenorientierten Design. Nebeneinderliegende gleichhohe div-Container bekommst du nur mit grossem Aufwand und nicht ohne Tricks hin.
              Trenn dich von der Vorstellung, daß die Container gleich groß sein und einen Rahmen haben müssen - du wirst sehen es ist plötzlich viel einfacher

              Erstell z.B. für den unteren Bereich EINEN Container (von mir aus mit Rahmen), der als Hintergrundbild eine Linie 100px von Links hat. Damit hast du zwei (optisch getrennte Bereiche) in einem Container. In diesen Container kannst du jetzt dein div für die Sidebar (nicht Left ) und den für Main packen. Beide ohne optische Auszeichnung. Jetzt ist es völlig egal, ob der linke Text (sidebar) oder der Hauptbereich (main) größer wird, die optische Trennung ist immer durchgehend.

              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                Originally posted by Falk Prüfer View Post
                Trenn dich von der Vorstellung, daß die Container gleich groß sein und einen Rahmen haben müssen - du wirst sehen es ist plötzlich viel einfacher
                Das ist übrigens genau das, was ich eben in der Antwort auf Deinen anderen Beitrag meinte. Man muss dem Kunden nur ein bisschen Flexibilität entlocken, dann müsste es mit vernünftigen Kunden auch klappen. :-)

                Gruß,
                -Efchen

                Comment


                • #9
                  Originally posted by Efchen View Post
                  Das ist übrigens genau das, was ich eben in der Antwort auf Deinen anderen Beitrag meinte. Man muss dem Kunden nur ein bisschen Flexibilität entlocken, dann müsste es mit vernünftigen Kunden auch klappen. :-)

                  Gruß,
                  -Efchen
                  ...es ist aber schon ein Unterschied ob ich jemandem helfe der HTML (bergreifen) lernen möchte, oder mit jemanden argumentiere der mit einer Internetseite einen bestimmten (in diesem Sinne kommerziellen) Zweck verfolgt!?
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment


                  • #10
                    da ich eigentlich nur aus hobby programmiere und mir eine nette homepage basteln möchte, die meinen wünschen entspricht, habe ich mich an die arbeit gemacht. ich werde auf jeden fall eure tipps beherzigen und mich nochmals melden, wenn fragen auftauchen...

                    meine zusammenfassung der informationen:

                    ich erstelle einen fixen header.
                    dann erstelle ich einen div navigation und einen div mit main.
                    als hintergrund für meinen container (enthält navigation und main)
                    nehme ich die linien, damit die divs nicht unterschiedlich lang wirken.
                    unten dran kommt dann ein div footer, welcher die untere linie enthält, damit es so wirkt, als ob da die seite zu ende wäre.

                    eine zusätzliche frage? welche breite und höhe ist denn momentan in der regel optimal/ am weitesten verbreitet. welche auflösung sollte man abzüglich der browsermenüs, statusanzeige usw annehmen, um einen optimalen sichtebereich zu haben? da ich auch fotos auf der homepage haben werde, ist das natürlich wichtig für die größe der fotos. ich hätte mir jetzt mal vorgestellt, 800x600 für fotos zu nehmen...

                    Comment


                    • #11
                      Nein, eigentlich nicht.

                      Comment


                      • #12
                        Originally posted by schnurzli View Post
                        da ich eigentlich nur aus hobby programmiere und mir eine nette homepage basteln möchte
                        Zu welchem Zweck eine Website erstellt wurde, ist primär egal. Jede Website, ob kommerziell oder nicht, sollte als Ziel haben, dass sie bei allen nutzbar ist. Das ist kein Problem mit aktueller Arbeitsweise.
                        Gerade bei hobbymäßig erstellten Websites hapert es oft an der Zeit, sich intensiv mit ihnen auseinanderzusetzen. Ein Grund mehr, die CSS-Arbeitsweise von Anfang an konsequent durchzusetzen, denn mit Tabellenlayouts und veralteten Arbeitsweisen verbraucht man enorm viel mehr Zeit.

                        die meinen wünschen entspricht
                        Das kann nicht oberes Ziel sein. Will man was erstellen, was nur einem selbst passt, sollte man sich lokal zuhause einen Server installieren und sich sein "Meisterwerk" da ansehen.
                        In einem weltweiten Netz mit Millarden von Nutzern, in einem Netz das seinen Nutzern verspricht, auf alle Inhalte zugreifen zu können, sollte man auch dafür sorgen, dass dieses Versprechen eingehalten werden kann. Mit aktueller Arbeitsweise kein Problem. Mit veralteten Arbeitsweisen ist die Nutzbarkeit eingeschränkt.

                        ich werde auf jeden fall eure tipps beherzigen
                        Dann wirst Du irgendwann einen Ruck versprüren, und merken, warum die aktuellen Arbeitsweise (HTML und CSS, Trennung von Inhalt und Layout, ...) die einzig sinnvollen sind und man alte Arbeitsweisen unbedingt über Bord schmeißen sollte.
                        Ich zwinge niemanden zu etwas. Ich will nur, dass sich jeder damit auseinandersetzt, um die Vorteile selber zu erkennen. Etliche können das mittlerweile bestätigen.

                        welche breite und höhe ist denn momentan in der regel optimal/ am weitesten verbreitet.
                        Diese Frage stellt sich bei der Web-Entwicklung eigentlich nicht, weil es nahezu unendlich viele Möglichkeiten gibt. Deswegen bietet Dir CSS ja auch Möglichkeiten, Deine Inhalte auf die jeweils verfügbare Fensterinnengröße Deiner Nutzer anzupassen, egal wie viel Dir zur Verfügung steht.

                        welche auflösung sollte man abzüglich der browsermenüs, statusanzeige usw annehmen, um einen optimalen sichtebereich zu haben?
                        Die Auflösung hat in der Web-Entwicklung überhaupt keinen Stellenwert, die kannst Du getrost vernachlässigen. Welchen Informationsgehalt würdest Du beispielsweise daraus ziehen, wenn ich Dir sage, dass ich eine Auflösung von 1280x1024 habe, mein Browserfenster aber nur 772x961px groß ist? Richtig, gar keinen. Und an der Auflösung siehst Du außerdem auch nicht, was für Toolbars ich evtl. noch installiert habe, ob ich eine Sidebar auf habe usw. Lediglich der verfügbare Innenbereich des Browsers ist relevant und der ist bei den meisten Menschen unterschiedlich.
                        Der optimale SIchtbereich ist 100%. Zugegeben, Fließtext sollte nicht zu breit werden. Sonst kann man den nicht mehr angenehm lesen. Und max-width wird leider nicht von allen Browsern interpretiert.

                        da ich auch fotos auf der homepage haben werde, ist das natürlich wichtig für die größe der fotos. ich hätte mir jetzt mal vorgestellt, 800x600 für fotos zu nehmen...
                        800x600 ist genauso gut oder schlecht wie 400x300 oder 221x166. Und da SVG nicht von allen unterstützt wird, macht man wohl weiterhin Bilder eher tendenziell kleiner und gibt größere Versionen lieber per Click auf das Bild.

                        Hier mal noch ein paar außerordentlich lehrreiche Links:

                        1. Diese Seite und diverse Unterseiten erklären die Usability, die Nutzbarkeit. Warum Auflösung irrelevant ist und solche Dinge: http://www.bestviewed.de/
                        2. Auch hier etwas über die Usability: http://www.woodshed.de/werbeagenturen/reichweite.html
                        3. Warum können Werbeagenturen keine guten WWW-Seiten schreiben? http://www.woodshed.de/werbeagenture...n_technik.html
                        4. Und zu guter letzt der berühmte Dialog mit dem Suchmaschinen-Robot, der zwar zum Lachen ist, aber eigentlich einen "traurigen" Hintergrund hat. http://www.woodshed.de/publikationen/dialog-robot.html

                        Comment

                        Working...
                        X