Darstellungsprobleme mit Div

  • hallo leute

    bin das erste mal hier weil ich hilfe benötige

    mein problem, ich habe eine schlichte html seite alles noch neu und daher leer also somit auch ohne fehler, bis auf eine sache,
    ich habe mir über google vier div´s rausgesucht und wollte die bei mir in einen div container packen.
    naja drinn ist der code ja ^^ aber irgendwie zerreisst es mir dadurch den zweiten content div was ich ja eigentlich als "wrapper" für die vier kleineren div´s nutze.

    ich hoffe ich habe mein problem ordentlich beschrieben und wäre froh wenn mir da jemand bei helfen könnte.

    ich gebe mal noch die html bzw css codes mit

    mfg sudteam

    HTML

    HTML
    <!DOCTYPE html><html><head><title>CSS Portal - Layout</title><!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]--><link rel="stylesheet" type="text/css" href="css/style.css" /></head><body>    <div id="wrapper">        <div id="headerwrap">        <div id="header">            <p>This is the Header</p>        </div>       </div>     <div id="navigationwrap">     <div id="navigation">            <p>This is the Menu</p>        </div>       </div>     <div id="contentwrap">     <div id="content">          <p> This is the Content 1 </p><hr />       </div>     <div id="content2">     <p> This is the Content 2 </p>          <div class="abox">          <p>ILorem ipsum dolor sit amet, consectetur adipiscing elit.Donec dictum semper felis, ac fringilla turpis tristique non. </p><div class="button"><a href="#">Read More</a>          </div>        </div>            <div class="abox">          <p>ILorem ipsum dolor sit amet, consectetur adipiscing elit.Donec dictum semper felis, ac fringilla turpis tristique non. </p><div class="button"><a href="#">Read More</a>        </div>      </div>          <div class="abox">        <p>ILorem ipsum dolor sit amet, consectetur adipiscing elit.Donec dictum semper felis, ac fringilla turpis tristique non. </p><div class="button"><a href="#">Read More</a></div>      </div>        <div class="abox">        <p>ILorem ipsum dolor sit amet, consectetur adipiscing elit.Donec dictum semper felis, ac fringilla turpis tristique non. </p><div class="button"><a href="#">Read More</a>      </div>    </div>       </div>     <div id="footerwrap">     <div id="footer">            <p>This is the Footer</p>          <!--  <a class="tooltips" href="#">CSS Tooltips<span>Tooltip</span></a>-->        </div>       </div>      </div>     </div></body></html>

    CSS

  • Hallo

    Zitat

    aber irgendwie zerreisst es mir dadurch den zweiten content div

    Das ist keine Problembeschreibung mit der wir etwas anfangen können.

    Dass die Webseite nicht wie von dir gewünscht angezeigt wird ist klar. Aber nicht was du erreichen willst.

    Zitat

    somit auch ohne fehler

    Das stimmt leider nicht. Wenn du eine fehlerfreie HTML5-Webseite erstellen möchtest musst du auch die HTML5-Regel einhalten. Dazu gehört zum Beispiel div-Elemente nur noch zu verwenden, wenn es keine geeigneteren gibt.

    Oder auf unnötige Container / Elemente zu verzichten.

    Technisch kannst du zwar deine Divitis beibehalten, sachlich handelt es sich aber um Fehler.

    Ich vermute dass du float verwendest ohne die Grundlagen dafür gelernt zu haben. Zum Beispiel, das gefloatete Elemente aus dem Dokumentfluss genommen werden.

    Zudem war float nur eine Notlösung. Aktuell und langfristig sollte zum Layout besser Flexbox verwendet werden, das im Gegensatz zu float direkt zum Layouten entwickelt wurde.

    Gruss

    MrMurphy

  • ok ja das stimmt was du da schreibst also wo das hier steht "This is the Content 2" sollten in eigentlich auch die vier kleineren divs mit drin sein und das ganze wie du sagst zentriert und auch so das ber border von content2 um die vier divs geht.
    center sollten dann aber nur die vier kleineren divs sein und nicht der text darüber.

    hoffe das hilft weiter

  • Hallo

    Ich habe trotzdem mal ein Beispiel erstellt, zumal auch andere User deinen Beitrag lesen werden.

    Flexbox hilft zudem bei vielen Problemen, für die es bisher keine sinnvolle Lösungen gab. Zum Beispiel dass die Container einer Zeile immer gleich hoch sind, egal wieviel Text sie enthalten. Oder dass in diesem Beispiel die Links "Weiterlesen" sich immer am unteren Rand des Containers befinden, egal wieviel Leerraum darüber ist.

    Zunächst einmal der HTML-Quelltext mit deutlich weniger Containern, passenden HTML5-Elementen und damit einer viel größeren Übersicht und Wartbarkeit::

    Jetzt die entscheidenden CSS-Angaben für die Seite, wobei die Flexbox-Angaben nur einen geringen Teil einnehmen und der Rest auch bei anderen Lösungen erforderlich ist:

    Und der komplette Quelltext zum direkten Erstellen einer Datei:

    Gruss

    MrMurphy

  • ich hätte da noch eine frage zu deinem layout, und zwar kann ich die 4 container auch dynamisch von der höhenangabe machen und dennoch den "weiterlesen link immer unten behalten?
    weil wenn ich zb. li in die boxen einfüge rutscht alles aus der box auserhalb unter die box.

    ich sag schon mal danke für die mühe und hilfe

    ps ich hab mich mal bissel durchgegooglet aber iwi sehe ich mit dem flx-zeug noch nicht so durch. :(

  • Hallo

    Ich kann dein Problem nicht nachvollziehen.

    Zitat

    zwar kann ich die 4 container auch dynamisch von der höhenangabe machen und dennoch den "weiterlesen link immer unten behalten

    Das Verhalten haben die Container doch.

    Alle Container einer Reihe sind immer gleich groß und der Weiterlesen-Link ist immer ganz unten.

    Zitat

    weil wenn ich zb. li in die boxen einfüge rutscht alles aus der box auserhalb unter die box

    Das kann nicht sein. Inhalt kann nur aus der Box rutschen wenn du den HTML-Quelltext sachlich falsch erstellst oder CSS-Anweisungen verwendest, die den Dokumentenfluß zerreißen.

    Ohne Link zu deiner Seite kann ich dir leider nicht konkret helfen.

    Gruss

    MrMurphy

  • Hallo

    An Hand deines Beispiels sind die von dir beschriebenen Probleme nicht direkt nachzuvollziehen.

    Das

    Zitat

    li in die boxen einfüge rutscht alles aus der box auserhalb unter die box.

    verstehe ich immer noch nicht.

    Hierzu

    Zitat

    dennoch den "weiterlesen link immer unten behalten

    habe ich eine Vermutung. Ich habe die Möglichkeit den Weiterlesen-Links (oder auch anderen Inhalt) unten in Containern anzuordnen eigentlich nur hinzugefügt um eine der vielen Möglichkeiten von Flexbox zu zeigen, danach hattest du aber überhaupt nicht gefragt.

    Praxisgerecht kannst du zum Beispiel folgenden HTML-Quelltext als Grundlage für die Cards verwenden:

    Code
    <section class="card">
                <div>
                   ...
                </div>
                <div>
                   ...
                </div>
             </section>

    An Stelle der Punkte kommt dann der Inhalt. Also zum Beispiel

    Du musst also alle (in diesem Fall vier) .card-Container so aufbauen.

    Sofern die Höhe mehr Platz bietet als der Inhalt steht das erste div oben und das zweite div möglichst weit unten.

    Dazu musst du noch das CSS

    Code
    .card p {
             margin: 0.5rem 0.25rem auto 0.25rem;
          }
          .card a {
             text-align: center;
             margin: 0.5rem 0.25rem 0 0.25rem;
          }

    ersetzen durch

    Zur Erläuterung:

    Durch

    Code
    .card {
             ...
             display: flex;
             flex-direction: column;
          }

    wird .card zu einem Flex-Container und die direkten Kind-Elemente (und nur die) zu Flex-Items. Das sind in diesem Fall jeweils die beiden div-Elemente.

    Durch flex-direction: column stehen sie übereinander, ähnlich wie Block-Elemente. Soweit noch nichts besonderes.

    Durch

    Code
    .card>div:nth-child(1) {
             margin: 0 0 auto 0;
          }

    wird dem jeweils ersten div ein unterer margin mit dem Wert auto zugewiesen. Sofern Leerraum zur Verfügung steht werden dadurch alle nachfolgenden Container so weit wie möglich nach unten gedrückt.

    Wichtig ist in diesem Zusammenhang der Selektor

    Code
    >

    statt des üblichen Leerzeichens. Dadurch wird auch dem CSS mitgeteilt, das nur für direkte Kinder-div von .card die dort bestimmten CSS-Anweisungen gelten sollen. Das mit :nth-child(1) das erste div-Element und mit :nht-child(2) das zweite angesprochen werden erklärt sich für den Anfang von selbst.

    Gruss

    MrMurphy

  • ok ich hab das im css mal ersetzt aber nun sind nur die weiterlesen links nach oben gerutscht aber nicht der eigentliche inhalt der ja immer noch unter der box steht
    wenn ich nur schon mal den inhalt wieder in der box habe würde mir das schon reichen.
    gruss sud

  • lach entschuldige bitte aber ich habe echt nur das css geändert das hrml voll vergessen naja wie sagt man so schön "wer lesen kann ist klar im vorteil" oder ^^ bettrift natürlich mich werde es noch mal versuchen diesmal mit html.

    gruss sud