2012-12-13 9 views
36

Here is the HTML I am working with.Sposób tworzenia procentowej szerokości elementu div względem nadrzędnego elementu div, a nie widoku:

<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>

Jakie chciałbym się zdarzyć jest wewnętrzna div zajmują 50% powierzchni danego jej div (zewnętrznej). Zamiast tego uzyskuje 50% dostępnej przestrzeni na rzutni, co oznacza, że ​​wraz z kurczeniem się przeglądarki/rzutni, robi się to samo.

Biorąc pod uwagę, że zewnętrzny element div ma min-width z 2000px, oczekiwałbym, że wewnętrzny element div będzie miał co najmniej szerokość 1000px.

+2

wewnętrzna strefa jest ' position: absolute', co oznacza, że ​​jest zasadniczo usunięty z normalnego obiegu dokumentów i nie jest już (dla obliczeń rozmiaru/położenia) dzieckiem #outer. Możesz spróbować 'position: relative' –

+2

@MarcB Nie jest już w strumieniu swojego rodzica, ale twój komentarz o braku bycia dzieckiem #outer jest mylący. Bardziej dokładnym opisem jest to, że używa on pierwszego elementu nadrzędnego/przodka, który jest absolutnie lub względnie pozycjonowany do obliczania rozmiaru/położenia. –

Odpowiedz

47

Określanie niż pozycja statyczna, np position: absolute/relative w węźle oznacza, że ​​będzie on używany jako odniesienie dla całkowicie umieszczone elementy w go 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

Dziękuję za odpowiedź i wyjaśnienie! – sean

+1

Byłem tu po to wyjaśnienie! Dzięki! –

+0

Nie wiedziałem, że o 'position: relative' i' absolute'. +1! – Cullub

9

Użyj pozycji: względna na elemencie nadrzędnym.

Zauważ, że gdybyś nie dodał żadnych atrybutów pozycji do żadnego z elementów div, nie zauważyłbyś takiego zachowania. Juan wyjaśnia dalej.

+10

Czasami mam wrażenie, że odpowiedzi na pytanie o stackoverflow są podobne do ceny. Jedna osoba daje poprawną odpowiedź. Następna osoba udziela odpowiedzi z wyjaśnieniem. Następny daje odpowiedź, wyjaśnienie i demo. Założę się 501, Bob! – William

+2

Przekazałem tę odpowiedź, ale nie sądziłem, że zawiera ona wystarczająco dużo wyjaśnień. Naucz je łowić –

+0

Nie jestem specjalnie wkurzający. To tylko zabawna obserwacja. – William

Powiązane problemy