2012-12-13 11 views
36

Here is the HTML I am working with.Wie Sie die prozentuale Breite von div relativ zum übergeordneten div und nicht zum Viewport machen können

<div id="outer" style="min-width: 2000px; min-height: 1000px; background: #3e3e3e;"> 
 
    <div id="inner" style="left: 1%; top: 45px; width: 50%; height: auto; position: absolute; z-index: 1;"> 
 
    <div style="background: #efffef; position: absolute; height: 400px; right: 0px; left: 0px;"></div> 
 
    </div> 
 
</div>

Was würde Ich mag es geschehen für die innere div 50% der an die Mutter div (äußeren) gegebenen Raum zu besetzen. Stattdessen erhält is 50% des verfügbaren Platzes für das Ansichtsfenster, was bedeutet, dass der Browser/das Ansichtsfenster verkleinert wird.

Angesichts der äußeren div min-width von 2000px, würde ich erwarten, dass die innere div mindestens 1000px breit sein.

+2

die innere div ist absolut positionierten Elemente als die Referenz verwendet wird position: absolute ', was bedeutet, dass es im Wesentlichen aus dem normalen Dokumentenfluss entfernt ist und nicht mehr (für Größen-/Positionsberechnungen) ein Kind von #Outer ist. Sie können versuchen, Position: relativ –

+2

@MarcB Es ist nicht mehr in den Fluss seiner Eltern, aber Ihr Kommentar über kein Kind von #Outer ist irreführend. Die genauere Beschreibung ist, dass es den ersten Elternteil/Vorfahre verwendet, der für Größen-/Positionsberechnungen absolut oder relativ positioniert ist. –

Antwort

47

eine nicht-statische Position angeben, zB position: absolute/relative auf einem Knoten bedeutet, dass es `darin http://jsfiddle.net/E5eEk/1/

#outer { 
 
    min-width: 2000px; 
 
    min-height: 1000px; 
 
    background: #3e3e3e; 
 
    position:relative 
 
} 
 

 
#inner { 
 
    left: 1%; 
 
    top: 45px; 
 
    width: 50%; 
 
    height: auto; 
 
    position: absolute; 
 
    z-index: 1; 
 
} 
 

 
#inner-inner { 
 
    background: #efffef; 
 
    position: absolute; 
 
    height: 400px; 
 
    right: 0px; 
 
    left: 0px; 
 
}
<div id="outer"> 
 
    <div id="inner"> 
 
    <div id="inner-inner"></div> 
 
    </div> 
 
</div>

+1

Danke für die Antwort und die Erklärung! – sean

+1

Ich war wegen dieser Erklärung hier! Vielen Dank! –

+0

Ich wusste das nicht über 'position: relative' und' absolute'. +1! – Cullub

9

Position verwenden: relativ zum übergeordneten Element.

Beachten Sie auch, dass, wenn Sie keinem der divs irgendwelche Positionsattribute hinzugefügt hätten, hätten Sie dieses Verhalten nicht gesehen. Juan erklärt weiter.

+10

Manchmal habe ich das Gefühl, dass stackoverflow Antworten wie The Price is Right sind. Eine Person gibt die richtige Antwort. Die nächste Person gibt die Antwort mit einer Erklärung. Der nächste gibt eine Antwort, eine Erklärung und eine Demo. Ich wette 501, Bob! – William

+2

Ich habe diese Antwort aufgefrischt, ich dachte nur nicht, dass sie eine Erklärung liefert. Bring sie zum Fischen. –

+0

Ich mache dir keinen Spaß. Es ist nur eine humorvolle Beobachtung. – William

Verwandte Themen