Problem mit "aside" und "sidebar1"

Hallo, Ich habe ein Problem mit meinem Script… :o
Ich habe eine Internetseite die „content“, „aside“, „head“, und „sidebar1“ beinhaltet…
Ich habe das Problem das „aside“ und „sidebar1“ unterschiedlich lang sind und sich nicht meinem „content“ anpassen.

Hier ein Screenshot um mein Problem zu verdeutlichen:
Link 1: http://abload.de/image.php?img=problem1j0fch.png
Link 2: http://abload.de/image.php?img=problem27giab.png

Ein Teil meines „Codes“ :slight_smile:

[CODE]
header {
background-color: none ;
opacity:0.95 ;

}

.sidebar1 {
float: left;
width: 220px;
max-height: relative;
background-color: #EADCAE;
padding-bottom: 10px;
opacity: 0.85;

}
.content {
padding: 10px 0;
width: 520px;
background-color: #EADCAE;
float: left;

}
aside {
float: left;
width: 220px;
height: relative;
background-color: #EADCAE;
padding: 10px 0;
opacity: 0.85;

}[/CODE]

Die Seitenstruktur lässt sich aus dem Screenshot nicht ersehen, aber ich vermute mal, dass es mit einem fehlenden clear zusammenhängt. Außerdem solltest du auf den Einsatz des Attributs position grundsätzlich verzichten, solange du noch nicht viel Erfahrung mit CSS gesammelt hast. Elemente innerhalb einer Seite werden mit margin zueinander positioniert.

Hallo,

für das Problem gibt es keine richtige Lösung, da die einzelnen Elemente / Spalten nicht aufeinander reagieren können.

Als klassischen Ausweg solltest du nach „faux columns“ googeln. Damit wird optisch eine gleichlange Spaltenhöhe vorgegaukelt. Ein Vorteil ist, das damit fast alle Browser klarkommen.

Aktuell gibt es das Flexbox-Modell. Das wird aber erst seit relativ kurzer Zeit von fast allen Browsern unterstützt. Von daher werden viele User damit noch nicht klarkommen.

Und als drittes könntest du eine Lösung mit den css-Anweisungen „display-table“ und „display-table-cell“ erstellen.

Mit deinem aktuellen Code sehe ich aber noch größere Probleme. Im Quelltext werden zum Beispiel Abstände durch das br-Element erzeugt. Das ist sachlich schlicht ein Fehler und erschwert spätere Änderungen.

Mit zwei, drei, vier oder fünf Anpassungen ist es also bei deinem Wunsch nicht getan.

Gruss

MrMurphy

Muss gar nicht so kompliziert sein. Wenn ich ein Parent mit zwei Childelementen habe, die gefloatet werden, und das Parent sich in seiner Größe den Childs anpassen sollen, dann könnte man quasi als drittes Child ein leeres Div mit einem clear hinzufügen. Ist zwar nicht schön, funktioniert, aber.

In der Praxis setze ich allerdings lieber auf grid-basierte Frameworks. Da stellen sich solche Probleme gar nicht.

Ein overflow:hidden oder ein float:left für das Parent-Div sollte reichen. Hintergrundfarbe mit background:rgba() notieren.

Ich bin mir jetzt ehrlich gesagt nicht sicher was ich machen soll :smiley:

Aber nur so zum Verständnis…

Wenn ich mein „content“ als position fixed einstelle, kann ich dann die „aside“ und „sidebar1“ als Parent (von „content“ abhängig) positionieren?

Du benötigst im oberen Context gar kein position. Dieses Attribut hat durchaus seine Berechtigung, aber nicht als Layout-Ersatz für margin und padding.

Wobei ich beim obigen Code übersehen hatte, dass du nicht position sondern height und max-height auf relative gesetzt hast, und das ist natürlich auch falsch.