Sie können: durch etwas, was ich genannt "Dual parenting":
Bei einer ähnlichen Herausforderung habe ich ein äußeres relatives Objekt (die Floats erziehend) und ein absolut definiertes Feld mit den gleichen Dimensionen wie das relative Elternelement definiert, beginnend bei 0,0 des gemeinsamen (relativen) Elternteils: ein identisches Kopieren mit dem Vorteil, Objekte innerhalb zu platzieren, die in der Lage sind, die äußeren Grenzen des Floats zu ignorieren (ich brauchte es, um ein Objekt auf der Seite zu zentrieren, unabhängig von der Breite der dynamischen Floats.)
Die "Dual Elternschaft "zerquetscht beide Probleme:
- der absolute Eltern konnte nicht die Höhe der Schwimmer (aber die Höhe der gegenseitigen Elternteil, die in der Lage war, die Schwimmer anzupassen).
- Das relative Parent konnte ein Objekt nicht zentriert auf der Seite positionieren (es würde nur die Mitte zwischen den Floats finden und den zentrierten Inhalt daran hindern, die Grenzen der schwebenden Objekte zu kreuzen).
Ich habe eine fiddle (contains documentation) demonstriert, wie diese Einrichtung quetscht und quetscht, während immer noch die zentrierte Box. Die Grundidee ist in dem unten stehenden Code beschrieben:
html (auf einer Seite Anmerkung: die Reihenfolge der divs (links-Mitte-rechts, Mitte-rechts-links, ...) spielt keine Rolle.)
<header>
<div class="header-left">left</div>
<div class="header-center">
<div class="centerinner">middle</div>
</div>
<div class="header-right">right</div>
</header>
css
header {
position:relative; /* shrinkwrap to contained floats */
/* display: block /* no need to state this here */
width: 100%;
margin:0;
padding:0;
vertical-align: top;
/* background-color: papayawhip; /* Debug */
}
.header-left { /* top left of header. header adapts to height */
float:left;
display:block;
/* width and padding as desired */
}
.header-center { /* absolute reference for container box */
position:absolute;
left: 0;
width: 100%;
height:100%;
/* background-color: gainsboro; /* Debug */
}
.centerinner { /* centered within absolute reference */
margin-left:45%;
margin-right:45%;
padding-left: 1ex;
padding-right: 1ex;
background-color: #D6A9C9;
width: -moz-fit-content;
width: -webkit-fit-content;
width: fit-content;
height:100%;
}
.header-right {
float:right;
text-align: right;
padding-left: 1ex;
color: forestgreen;
/* background-color: #D6F2C3; /* Debug */
}
von auf der inneren DIV absolute Positionierung verwenden, werden Sie es aus dem Fluss der Seite zu entfernen. Der einzige Weg, um zu verhindern, dass der äußere DIV kollabiert, wäre, ihn zu stylen (vielleicht mit "min-height" oder "padding-top", um der Höhe des inneren DIV zu entsprechen). – joequincy