2013-07-29 13 views
8

Muszę ustawić położenie na absolutne, aby można było ustawić na stałe #bottom u dołu ekranu. Też muszę mieć to pasuje do szerokości/wyściółki pojemnika #panel. Kiedy jednak ustawiam pozycję na absolutną, szerokość tylko wypełnia całą szerokość ekranu, jak mogę to zatrzymać? Potrzebuję #bottom, aby zmieścić się wewnątrz szerokości/wypełnienia #panel.Jak uzyskać bezwzględne dopasowanie szerokości/obicia rodzica?

HTML:

<div id="panel"> 
    <div id="bottom"> 
     <div class="update"></div> 
    </div> 
</div> 

CSS:

#panel { 
    width: 21.25%; 
    height: 100%; 
    background-color: #0794ea; 
    float: left; 
    padding: 0 1.5%; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
} 

.update { 
    width: 100%; 
    background-color: #006699; 
    text-align: center; 
    height: 56px; 
    color: white; 
} 

#bottom { 
    position: absolute; 
    bottom: 20px; 
    width: 100%; 
} 

enter image description here

Powyżej jest to obraz tego, co się dzieje. Zielony to dopełnienie, a niebieski to obszar zawartości, do którego powinien pasować (ciemnoniebieski to rzeczywisty element div (#panel), który próbuję dopasować do obszaru zawartości). Zakładam, że to absolutne, że to ignoruje, szukam sposobu na obejście tego.

Fiddle: http://jsfiddle.net/qTJhW/

Dzięki

+0

Spróbuj pozycję dodając: w stosunku do #panel. –

+0

To z pewnością poprawiło sytuację. Element #bottom nie wypełnia już całego ekranu, jednak nadal ignoruje wypełnienie panelu # (zielone na obrazie). – jskidd3

+0

Jestem za serwerem biurowym atm. Więc nie masz dostępu do obrazu. Czy możesz stworzyć dla tego skrzypce? –

Odpowiedz

2

Problem z tym, co robisz, jest to, że bierze całą szerokość łącznie z wyściółką i dostosowanie go do lewej strony szerokość padding. Możesz to naprawić, używając opakowania o względnej pozycji. Nie zapomnij również o względnej pozycji #panel.

Kod skończyć z jest coś wzdłuż tych linii:

<div id="panel"> 
    <div class="wrapper"> 
     <div id="bottom"> 
      <div class="update"> 
       a   
      </div> 
     </div>  
    </div> 
</div> 

I CSS:

#panel { 
    width: 21.25%; 
    height: 100%; 
    background-color: #0794ea; 
    float: left; 
    padding: 0 1.5%; 
    box-sizing: border-box; 
} 

.update { 
    width: 100%; 
    background-color: #006699; 
    text-align: center; 
    height: 56px; 
    color: white; 
} 

.wrapper { 
    position: relative; 
    height: 100%; 
} 

#bottom { 
    position: absolute; 
    bottom: 20px; 
    left: 0; 
    width: 100%; 
    background: yellow; 
} 

Oto przykład: http://codepen.io/DanielVoogsgerd/pen/Lezjy

+0

To nie odpowiada na moje pytanie z powodu struktury HTML, moja wina naprawdę. To jest to, co aktualnie mam, gdybyś mógł zmodyfikować swoją odpowiedź, by to pasowało, byłbym wdzięczny: http://jsfiddle.net/qTJhW/ – jskidd3

+0

left: 0px for #bottom naprawia twój problem –

+0

Czy jesteś w stanie zmienić html w ogóle? czy po prostu potrzebuje aktualizacji wewnątrz dolnej div? Tak jak Adrian mówi, że zawsze możesz po prostu ustawić ramkę w lewo, używając: 'left: 0;' –

-4

dodać left: 0px do twój absolutny id. rozpocznie formularz 0px z jego względnej id

1

Można użyć calc takiego:

width: calc(100% - Padding) 
Powiązane problemy