2016-04-25 3 views
0

Ich versuche, eine obere Menüleiste zu haben, aber ich scheitere float: left. Wie man das richtige Verhalten (hier im Widget selbst erwähnt) für eine obere Menüleiste?Top Menü CSS Design

 * { margin:0; padding: 0; } 
 
     #menu { background-color: yellow; } 
 
     #left {background-color: green; width: 200px; } 
 
     #mid { background-color: red; width: 40%; float: left; } 
 
     #right {background-color: blue; float: left; }
<div id="menu"> 
 
    <div id="left">left green: 200px</div> 
 
    <div id="mid">mid red: 40% of browser width</div> 
 
    <div id="right">right blue: rest</div> 
 
    </div> 
 
    <div> 
 
    content of the site 
 
    </div>

Antwort

1

Ich denke, das ist, was Sie zu tun versuchen. Ich habe CSS flexbox verwendet, was es ziemlich einfach macht.

 * { margin:0; padding: 0; } 
 
     #menu { background-color: yellow; display: flex; } 
 
     #left {background-color: green; flex: 0 0 200px; } 
 
     #mid { background-color: red; flex: 0 0 40%; } 
 
     #right {background-color: blue; flex: 1; }
<div id="menu"> 
 
    <div id="left">left green: 200px</div> 
 
    <div id="mid">mid red: 40% of browser width</div> 
 
    <div id="right">right blue: rest</div> 
 
    </div> 
 
    <div> 
 
    content of the site 
 
    </div>

Wenn Sie Legacy-Unterstützung benötigen, dann brauchen Sie nur richtig die Schwimmer anwenden:

 * { margin:0; padding: 0; } 
 
     #menu { background-color: yellow; } 
 
     #left {background-color: green; float: left; width: 200px; } 
 
     #mid { background-color: red; float: left; width: 40%; } 
 
     #right {background-color: blue; }
<div id="menu"> 
 
    <div id="left">left green: 200px</div> 
 
    <div id="mid">mid red: 40% of browser width</div> 
 
    <div id="right">right blue: rest</div> 
 
    </div> 
 
    <div> 
 
    content of the site 
 
    </div>

+0

Nö .... nicht 'flex: 1 'auf allen divs ... nur die letzte. –

+0

@Paulie_D Danke für diese Klarstellung. Schätzen Sie Ihre Zeit und Mühe, um genaue Antworten zu erhalten. – Quantastical

+0

@Quantastical Das Seltsame ist, dass "Flex" schlecht auf Chrome & Safari für iPad unterstützt wird (sogar die neuesten Versionen). Zum Beispiel hier ist ein Problem, das ich bekomme http://stackoverflow.com/questions/36877321/display-flex-doesnt-work-on-ipad-both-chrome-and-safari Haben Sie eine Idee, wie Sie das lösen? – Basj

1

Flexbox das tun kann.

Es ist wichtig, die richtigen Flex-Eigenschaften zu verwenden, damit sich die Divis mit begrenzter Breite nicht ausdehnen.

* { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
#menu { 
 
    background-color: yellow; 
 
    display: flex; 
 
} 
 
#left { 
 
    background-color: green; 
 
    flex: 0 0 200px; 
 
} 
 
#mid { 
 
    background-color: red; 
 
    flex: 0 0 40%; 
 
} 
 
#right { 
 
    background-color: blue; 
 
    flex: 1; 
 
}
<div id="menu"> 
 
    <div id="left">left green: 200px</div> 
 
    <div id="mid">mid red: 40% of browser width</div> 
 
    <div id="right">right blue: rest</div> 
 
</div> 
 
<div> 
 
    content of the site 
 
</div>

+0

Cool! Noch nie von Flex gehört! Wie haben die Leute vor dem Flex gemacht? (Ich denke zum Beispiel bootstrap verwendet nicht flex). – Basj

+0

@Basj Bootstrap 4 bewegt sich auf Flex IIRC. Zuvor waren sie Floats. – Quantastical

+0

Ich habe es auf dem iPad ausprobiert und es scheint, dass 'flex' auf Chrome & Safari für iPad nicht gut unterstützt wird (sogar die letzten Versionen). Ihr Code wird auf solchen Geräten nicht sehr gut wiedergegeben. Ich habe eine Frage dazu gestellt, wenn Sie vielleicht eine Idee haben? http://stackoverflow.com/questions/36877321/display-flex-doesnt-work-on-ipad-both-chrome-and-safari – Basj