Floats und feste Breiten (DIV)

owned139

Mitglied
Hallo Community,
ich möchte zwei DIV's nebeneinander platzieren.
Eins davon hat eine feste Breite und floatet, das andere soll dabei dynamisch sich der restlichen Breite anpassen.

So sieht der Code dazu aus:
HTML:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test 2</title>
        <style>
            .wrap{
                width:900px;
                margin:auto;
                background:#00f;
            }
            .sidebar{
                width:300px;
                height:500px;
                background:#f00;
                float:right;
            }
            .clearfix{
                clear:both;
            }
            .content{
                margin:0 300px 0 0;
                height:400px;
                background:#0f0;
            }
        </style>
    </head>
    <body>
        <div class="wrap">
            <div class="sidebar"></div>
            <div class="content"></div>
            <div class="clearfix"></div>
        </div>
    </body>
</html>
Allerdings zerhackt es mir, sobald ich in "content" bzw "sidebar" noch andere Elemente habe, welche ebenfalls floaten, irgendwann das ganze Layout.
Das ganze sieht dann (am Beispiel von News) in etwa so aus: http://www.myimg.de/?img=Unbenannt228379.jpg
Oben ist der erste Artikel zusehen, dann folgt ein riesiger Freiraum gefolgt von den ordentlich formatierten News.

Als alternative dazu hätte ich noch folgende Struktur:
HTML:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Test</title>
        <style>
            .wrap{
                width:900px;
                margin:auto;
                background:#00f;
                display:table;
            }
            .sidebar{
                width:300px;
                background:#f00;
                height:500px;
                display:table-cell;
                vertical-align:top;
            }
            .content{
                background:#0f0;
                display:table-cell;
                vertical-align:top;
            }
        </style>
    </head>
    <body>
        <div class="wrap">
            <div class="content"></div>
            <div class="sidebar"></div>
        </div>
    </body>
</html>
Allerdings benutze ich hierbei "display:table" und Tabellenlayouts gehören ja schon lange nicht mehr zum guten Ton bzw. sind ein Unding.
Wie funktioniert das also sauber?
 
Versuch es in der float-Version mal mit overflow:hidden für die Klasse .wrap
CSS:
.wrap {
width:900px;
margin:auto;
background:#00f;
overflow:hidden
}
... und nimm dafür im Gegenzug das (zudem inhaltsleere) <div class="clearfix"></div> aus dem Markup raus.

Die CSS-Tabelleneigenschaften dürfen nicht mit den verpönten HTML-Tabellenlayouts in einen Topf geschmissen werden - von daher spricht überhaupt nichts gegen diese Technik :)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück