Ich weiß nicht, ob es sich um ein häufiges Problem handelt, aber ich kann die Lösung im Web bisher nicht finden. Ich möchte, dass zwei Divs in ein anderes Div eingewickelt werden, aber diese beiden Divs im Inneren müssen auf derselben Ebene ausgerichtet sein (zum Beispiel: links nimmt 20% Breite des wrappDiv, rechts nimmt weitere 80%). Um diesen Zweck zu erreichen, habe ich das folgende Beispiel-CSS verwendet. Jetzt hat der Wrap-DIV diese Divs jedoch nicht alle verpackt. Das Wrap Div hat eine geringe Höhe als die beiden darin enthaltenen Divs. Wie kann ich sicherstellen, dass die Wrap-Div die größte Höhe als die enthaltenen Divs hat? Vielen Dank!!!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>liquid test</title>
<style type="text/css" media="screen">
body
{
margin: 0;
padding: 0;
height:100%;
}
#nav
{
float: left;
width: 25%;
height: 150px;
background-color: #999;
margin-bottom: 10px;
}
#content
{
float: left;
margin-left: 1%;
width: 65%;
height: 150px;
background-color: #999;
margin-bottom: 10px;
}
#wrap
{
background-color:#DDD;
height:100%;
}
</style>
</head>
<body>
<div id="wrap">
<h1>wrap1 </h1>
<div id="nav"></div>
<div id="content"><a href="index.htm">< Back to article</a></div>
</div>
</body>
</html>
Abgesehen vom
clear: both
Hack können Sie das zusätzliche Element überspringen undoverflow: hidden
für die Verpackung verwendendiv
:<div style="overflow: hidden;"> <div style="float: left;"></div> <div style="float: left;"></div> </div>
quelle
.container { word-wrap: break-word; }
und.container img { max-width: 100%; height: auto; }
damit sich große Inhalte gut verhalten.Dies sollte es tun:
<div id="wrap"> <div id="nav"></div> <div id="content"></div> <div style="clear:both"></div> </div>
quelle
overflow:hidden
(wie von @Mikael S erwähnt) funktioniert nicht in jeder Situation, sollte aber in den meisten Situationen funktionieren.Eine andere Möglichkeit ist, den
:after
Trick zu verwenden:<div class="wrapper"> <div class="col"></div> <div class="col"></div> </div> .wrapper { min-height: 1px; /* Required for IE7 */ } .wrapper:after { clear: both; display: block; height: 0; overflow: hidden; visibility: hidden; content: "."; font-size: 0; } .col { display: inline; float: left; }
Und für IE6:
.wrapper { height: 1px; }
quelle
Alles schweben lassen.
Wenn Sie ein Floated
div
in einem Non-div
Floated haben, wird alles verrückt. Aus diesem Grund verwenden die meisten CSS-Frameworks wie Blueprint und 960.gs Floated Container unddivs
.Um Ihre spezielle Frage zu beantworten,
<div class="container"> <!-- .container { float: left; width: 100%; } --> <div class="sidebar"> <!-- .sidebar { float: left; width: 20%; height: auto; } --> </div> <div class="content"> <!-- .sidebar { float: left; width: 20%; height: auto; } --> </div> </div>
sollte gut funktionieren, solange Sie
float:left;
alle Ihre<div>
s.quelle
Verwenden Sie diesen CSS-Hack, er hat mir viel Ärger und Zeit gespart.
http://swiftthemes.com/2009/12/css-tips-and-hacks/problem-with-height-of-div-containing-floats-and-inline-lists/
Ich benutze es in jedem Projekt.
quelle
Hier ist eine andere, die ich hilfreich fand. Es funktioniert auch für Responsive CSS-Design.
#wrap { display: table; table-layout: fixed; /* it'll enable the div to be responsive */ width: 100%; /* as display table will shrink the div to content-wide */ }
NEBEN Meep3D der ANTWORT
Mit CSS3 können Sie in einem dynamischen Teil dem letzten Element einen klaren Gleitkommawert hinzufügen, indem Sie:
#wrap [class*='my-div-class']:last-of-type { display: block; clear: both; }
Wo deine Divs sind:
<div id="wrap"> <?php for( $i = 0; $i < 3; $i++ ) { <div class="my-div-class-<?php echo $i ?>> <p>content</p> </div> <!-- .my-div-class-<?php echo $i ?> --> } </div>
Referenz:
:last-of-type
- CSS-TRICKSquelle
Hier zeige ich Ihnen einen Ausschnitt, in dem Ihr Problem gelöst ist (ich weiß, es ist zu lange her, seit Sie es veröffentlicht haben, aber ich denke, dies ist sauberer als die "klare" Lösung).
#nav { float: left; width: 25%; height: 150px; background-color: #999; margin-bottom: 10px; } #content { float: left; margin-left: 1%; width: 65%; height: 150px; background-color: #999; margin-bottom: 10px; } #wrap { background-color:#DDD; overflow: hidden }
<div id="wrap"> <h1>wrap1 </h1> <div id="nav"></div> <div id="content"><a href="index.htm">< Back to article</a></div> </div>
quelle
Anstatt zu verwenden
overflow:hidden
, was eine Art Hack ist, warum nicht einfach eine feste Höhe festlegen, z. B.height:500px
für die übergeordnete Abteilung?quelle
<html> <head> <style> #main { border: 1px #000 solid; width: 600px; height: 400px; margin: auto;} #one { width: 20%; height: 100%; background-color: blue; display: inline-block; } #two { width: 80%; height: 100%; background-color: red; display: inline-block; } </style> </head> <body> <div id="main"> <span id="one">one</span><span id="two">two</span> </div> </body> </html>
Das Geheimnis ist das
inline-block
. Wenn Sie Ränder oder Ränder verwenden, müssen Sie möglicherweise die Breite des Divs reduzieren, das diese verwendet.HINWEIS: Dies funktioniert in IE6 / 7 nicht ordnungsgemäß, wenn Sie "DIV" anstelle von "SPAN" verwenden. (sehen http://www.quirksmode.org/css/display.html )
quelle
HTML
<div id="wrapper"> <div id="nav"></div> <div id="content"></div> <div class="clearFloat"></div> </div>
CSS
.clearFloat { font-size: 0px; line-height: 0px; margin: 0px; padding: 0px; clear: both; height: 0px; }
quelle