Antworten auf deine Fragen:
Neues Thema erstellen

Erledigt - Wie sind diese Div-Elemente korrekt anzuordnen?

G

Gelöschtes Mitglied 633957

Guest

Hallo ihr Webstyler,

zum Start des neuen Jahres, habe ich mir überlegt, ist es genau der richtige Zeitpunkt mit dem Coden der eigenen Website zu beginnen - und kaum bin ich ein paar Stunden dabei, stoße ich auch schon auf das erste Problem...
Durch das Nutzen von float:right; in dem #body_box, wächst das Cropper-Div (hellgrauer Hintergrund mit 1px Rahmen) nicht mit.

Ich vermute, ich denke irgendwie in die falsche Richtung, denn das Div-Element ist nun wirklich gut dokumentiert, aber ich bin nicht in der Lage eine Lösung zu finden - und ich habe gesucht; auch hier!

Hier sind meine entschlackten Dokumente:
CSS:
/* Das Problemkind */
#body_box {
    float:right;
    width:100%;
    max-width:240px;
    padding:0px 5px 5px 5px;
    background-color:green;
}
#body_content {
    width:100%;
    max-width:900px;
    padding:0px 5px 5px 5px;
    background-color:red;
}
/* Ende des Problemkindes */

#cropper {
    margin:20px auto;
    padding:0;
    position:relative;
    width:100%;
    max-width:1140px;
    border:1px solid #e5e8eb;
    background-color: #e5e8eb;
}
* {
    padding:0;
    margin:0;
}
body {
    background-color: #0b2946;
    color:#2a2b2f;
    display:block;
    margin:0;
    padding:0;
    font-family:Lucida Console, Trebuchet MS, Helvetica, Verdana, Geneva , MS Sans-Serif, sans-serif;
    font-size:16px;
    line-height: 22px;
    text-decoration: none;
}
img {
    max-width:100%;
}
.slideshow {
    width:100%;
    max-width:1140px;
    display:block;
    position:relative;
    margin:0px auto;
    overflow:hidden;
}
div.navigate {
    width:725px;
    height:25px;
    margin:10px auto;
    text-decoration:none;
    max-width:1140px;
}
hr.style_fade {
    border:0;
    height:1px;
    background-image:linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0));
}

HTML:
<!doctype html>
<html lang="de">
<head>
   <meta charset="UTF-8" />
   <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   <title></title>
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <link rel="stylesheet" href="problemkind.css">
</head>

<body>
<div id="cropper">

    <!-- Image Slider -->
    <div class="slideshow">
        Hier ist ein Image-Slider
    </div>

    <!-- Navigation -->
    <div class="navigate">
        Navigation w&auml;re dann hier
    </div>
    <BR><BR>
        <hr class="style_fade">
    <BR>

<!-- HIER WIRD ES PROBLEMATISCH -->
        <div id="body_box">
            Hier<BR>soll doch bitte<BR>der Div-Container &quot;cropper&quot;<BR>mit diesem Div-Element<BR>auch <B>mitwachsen</B>!
        </div>
        <div id="body_content">
            Inhalte der Website<BR>
            Der eigentliche Body-Bereich!<BR><BR>
            Das Cropper-Div-Element w&auml;chst mit!
        </div>

</div> <!-- End cropper -->

</body>
</html>

So schaut die Ausgabe aus:


Über einen Lösungsvorschlag oder wenigsten einen Schubser in die richtige Richtung wäre ich sehr dankbar.
Was meine CSS-Skills anbelangt, so gibt es doch eindeutig, massive Defizite!
Ziel ist es, dass der hellgraue Hintergrund (mein so genannter Cropper-Div) alle enthaltenen Div's umschließt und somit die grüne Box nicht über den Rand hinaus läuft!

Greetz, Ty

Edit: Die Farben sind schlecht gewählt, fällt mir gerade auf! ROT ist super, GRÜN ist das Problem! :oops:
 

G

Gelöschtes Mitglied 633957

Guest

Versuche es doch mal mit dem Flex-Modell statt float.
Kucks Du hier mal: Link
Vielen Dank für den Artikel!
Ich habe es getestet und es funktioniert in meinem geposteten Code super. Leider bringt es in meinem originalen Code, sowohl den Image-Slider als auch die Navigation durcheinander. Die beiden Inhalte mit einem Div zu umschließen und diese auch via Flex anzuordnen hat nicht geholfen. Ich fürchte, da müsste ich mein gesamtes CSS neu aufbauen.

Geholfen hat die Spielerei mit Flex dennoch, denn -hätte ich auch früher drauf kommen können- mir ist mittendrin aufgegangen, dass ich das floaten ja auch beenden kann!

Gesagt, getan:
CSS:
#body_clearfloat {
    clear:both;     /* clear:right; hätte in meinem Fall ausgereicht */
}
HTML:
<div id="cropper">
<!-- Slider, Navi, anderes Gedöns -->
   <div id="body_box">float wird hier verwendet</div>
   <div id="body_content">Seiten-Inhalte</div>
   <div id="body_clearfloat"></div>
</div>
Nun umschießt mein Cropper wunderbar meine Body-Container!

Vielen Dank für die Hilfe - hat geholfen, wenn auch nicht so wie gedacht! ;)

Edit: Ich setze das Thema mal auf "Erledigt". Wer eine elegantere Idee hat, darf diese dennoch gerne posten. Ich würde mich freuen!
 
Zuletzt bearbeitet von einem Moderator:

RootIT

Noch nicht viel geschrieben

Eigentlich ein Recht einfaches Problem;D

Wenn du etwas Floatest musst du dem Browser auch sagen wann er aufhören soll zu Floaten. Dazu z.B. ein leeres Div hinter deinem Body Content
<div id="clear"></div>

und im Css

#clear {
clear: both;
}


Dann bedenke bitte noch eine Pixelgrößen, Wenn des Hauptfenster 1140px hat wird kannst du auch nur diese darunter vergeben, inkl. Margin und Border.

Im Content-Box Modell wird die Width auf den Content angewendet und die Border/Padding obendrauf gerechnet. Dann reichen die Pixel des Rahmen nicht mehr.

Entweder Pixel anpassen oder

box-sizing: border-box;

Kurzer link dazu


Ups, richtig lesen soll helfen, hast ja schon gefunden...
 

ohjamaney

Zuschauer

Schön dass Du eine Lösung gefunden hast. Allerdings ist das noch CSS 2 Style. Flex ersetzt float wie div das table beim Layout. Mit flex hast Du viel mehr Gestaltungsmöglichkeiten und sparst letztendlich Codezeilen.
<div id="body_clearfloat"></div>

  • #body_clearfloat {
  • clear:both; /* clear:right; hätte in meinem Fall ausgereicht */
  • }

Das obige entfällt und wird ersetzt durch:
Code:
display:flex;
im umfassenden Container.

Mit flex kannst Du die Elemente per CSS umordnen ohne den HTML-Code zu ändern. Das ist wichtig wenn es in Richtung Responsives Webdesign geht. Float ist noch gut um Text um Bilder laufen zu lassen. Aber zum Anordnen von Elementen nimmt man heute flex.
Wenn Dir die einfache Handhabung von flex erstmal klar geworden ist, wirst Du es lieben ^^. Hier noch mal zwei Links zum kennenlernen:
http://www.mediaevent.de/tutorial/flexbox.html
http://webkrauts.de/artikel/2012/css3-flexbox-abloesung-fuer-float-layouts

Ps.: Zu deinem Problem mit dem Slider usw. Dann musst Du halt diesen Inhalt mit einem umfassenden Container abgrenzen bzw den footer in einem Extra- Container packen und diesem flex zu weisen. Flex gilt immer für alles was sich innerhalb seines Bereiches befindet. Auf die Elemente ausserhalb hat es keinen Einfluss. Zum Beispiel:
HTML
HTML:
<div id="Inhalt">Inhalt eben, normal dargestellt</div>
<div id="Flexbox">Hier wird alles mit Hilfe des Flexmodells angeordnet
    <div id="innerBox_1">Box 1</div>
    <div id="innerBox_2">Box 2</div>
</div>
<div id="Inhalt_2">noch mehr Inhalt, wieder normal dargestellt</div>

CSS
CSS:
#Flexbox { display:flex; }
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 633957

Guest

Allerdings ist das noch CSS 2 Style. Flex ersetzt float wie div das table beim Layout.
Wie schön waren die Zeiten, als es noch Tabellen-Designs gab!

Zu deinem Problem mit dem Slider usw. Dann musst Du halt diesen Inhalt mit einem umfassenden Container abgrenzen bzw den footer in einem Extra- Container packen und diesem flex zu weisen.
Das habe ich versucht, allerdings funktioniert die Animation bei der Navigation nicht mehr korrrekt und der Image-Slider macht auf Resposive und schrumpft auf die kleinste Größe!
Woran das liegt, habe ich noch nicht ergründen können, bin in CSS allerdings auch eher unbehollfen unterwegs.

Um flex besser zu verstehen, werde ich nun erst einmal meinen kleinen Admin-Bereich via flex umsetzen und danach versuchen, es auf meine Hauptseiten korrekt anzuwenden.
Deine Links sind gebookmarkt und ich bin sehr dankbar für die Hinweise!

Greetz, Ty
 

ohjamaney

Zuschauer

Das hinzufügen eines neuen div sollte keine Auswirkung auf eine Animation oder auf die Grösse anderer div's haben. Wenn doch, ist Dein Aufbau... naja, eher ungünstig^^

Schau Dir diese Änderungen mal an. Das funzt bei mir einwandfrei.

HTML:
HTML:
<div id="cropper">
    <!-- Image Slider -->
    <div class="slideshow">
        Hier ist ein Image-Slider
    </div>
    <!-- Navigation -->
    <div class="navigate">
        Navigation w&auml;re dann hier
    </div>
    <BR><BR>
        <hr class="style_fade">
    <BR>

<div id="flexbox">
<!-- Ich habe das Problem in das div "flexbox" separiert -->
        <div id="body_box">
            Hier<BR>soll doch bitte<BR>der Div-Container &quot;cropper&quot;<BR>mit diesem Div-Element<BR>auch <B>mitwachsen</B>!
        </div>
        <div id="body_content">
            Inhalte der Website<BR>
            Der eigentliche Body-Bereich!<BR><BR>
            Das Cropper-Div-Element w&auml;chst mit!
        </div>
</div> <!-- End flexbox -->
</div> <!-- End cropper -->

CSS:
CSS:
/* NEU */
#flexbox {
    display:flex;
    margin:0 auto;
    width:1140px;
}

/* float entfernt */
#body_box {
    width:100%;
    max-width:240px;
    padding:0px 5px 5px 5px;
    background-color:green;
}

Screenshot:


und mit mehr Inhalt


Erfolgreich getestet mit: Firefox, Chrome, Edge, IE11 und Opera. Allesamt neueste Versionen.
 
Zuletzt bearbeitet:

RootIT

Noch nicht viel geschrieben

Mit dem Flex gebe ich dir vollkommen recht, es mach vieles viel einfacher und ist meines Erachtens nach auch angenehmer zu erstellen.

Das Problem liegt aber in den älteren Browser Versionen. Bevor ich ein 2. Design für die alten Versionen baue, mache ich doch gleich eins was in allen Funktioniert. Ich denke das Flex Design wird noch ein klein wenig zeit brauchen bevor ich es einsetzen würde. Der Marktanteil der älteren Browserversionen, speziell IE, ist zum Glück mit Win10 stark zurück gegangen aber noch zu groß um ihn zu ignorieren.

Diese Entscheidung muss wohl jeder für sich treffen, ich zumindest warte noch etwas bevor ich komplett auf CSS3 setze.
 

ohjamaney

Zuschauer

Diese Entscheidung muss wohl jeder für sich treffen, ich zumindest warte noch etwas bevor ich komplett auf CSS3 setze.

Da gebe ich Dir recht. Das muss jeder für sich entscheiden.
Aber ich möchte etwas zu bedenken geben. Wer heute immer noch mit IE8 unterwegs ist, hat selber Schuld wenn Seiten nicht richtig angezeigt werden. Browser sind kostenlos! Es sollte keine Hürde sein, sich einen modernen Browser wie FireFox oder Chrome zu installieren. Wer das nicht hinbekommt, hat im Netz nichts zu suchen! Denn es geht hier um unser aller Sicherheit. Jeder der seine Sicherheit vernachlässigt, gefährdet auch andere durch sein Verhalten. Das ist ein Prinzip des Netzes.
Deshalb unterstütze ich grundsätzlich keine veralteten Browsergenerationen. Genauso wenig kann ich es gut heissen, dass noch XP benutzt wird. Es findet für dieses OS kein sicherheitsrelevanter Support mehr statt. Das mag man von Seiten MS richtig oder falsch finden, darum geht es hier nicht. Wer zu geizig ist, 30 Euro für eine Win7-Lizenz (gibt es bei ebay) zu zahlen, hat meine Unterstützung nicht verdient.

Und falls jetzt einer damit kommt, ja dann muss ich ja neue Hardware kaufen.... tja, so ist das dann wohl wenn man einen PC nutzen will, der nicht nur seinen eigenen Bedarf deckt sondern auch noch andere User (mit denen man unvermeidlich per Internet verbunden ist) nicht in Gefahr bringt.

Und die Einschränkungen was Flex betrifft sind marginal. Man schaue mal hier: http://caniuse.com/#search=flex
Im Grunde wird alles ab Win7 unterstützt. Keinen Support findet man dann bei den Feinheiten, auf die man bei einfacher Nutzung des Flexmodells auch verzichten kann.

Aber wie gesagt, das muss jeder selber entscheiden.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.621
Beiträge
1.538.378
Mitglieder
67.545
Neuestes Mitglied
helenkitina
Oben