Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS]100% wysokości większe niż cały DIV
Forum PHP.pl > Forum > Przedszkole
Maxie
Witam. Otóż mam z pozoru banalny problem. Otóż umieszczam diva w divie i tak dalej. Nadaję ostatniemu wysokość 100% by pokrył się z wcześniej stworzonym. A tu bach! Według niego 100% wychodzi poza div'a ohmy.gif . Ciężko to opisać, daję screena:

Kod wygląda tak:
  1. div.comment {
  2. min-height: 120px;
  3. border: 1px solid #dddddd;
  4. margin: 3px;
  5. padding: 3px;
  6.  
  7. }
  8.  
  9. div.comment div.top {
  10. border-bottom: 1px dotted #dddddd;
  11. margin: 3px;
  12. }
  13.  
  14. div.comment div.top a.user{
  15. font-weight: bold;
  16. }
  17. div.comment div.top span.date{
  18. float: right;
  19. }
  20.  
  21. div.comment div.avatar {
  22. border-right: 1px solid #dddddd;
  23. padding: 4px;
  24. min-height: 75px;
  25. max-height: none;
  26. height: 100%;
  27. float: left;
  28. overflow: hidden;
  29. display:block;
  30. background-color: #eeeeee;
  31. }
  32. div.comment div.avatar img.avatar{
  33. border: 1px solid #dddddd;
  34. margin: 5px;
  35. }

  1. <div class="comment">
  2.  
  3. <div class="top">
  4. <a href="dupa" class="user">Maxie</a>
  5. <span class="date">24.01.2013</span>
  6. </div>
  7.  
  8. <div class="avatar">
  9. <img class="avatar" src="http://fc05.deviantart.net/fs40/f/2009/032/5/1/Reading__Icon_by_Jevanni.gif"><BR>
  10. <a class="linkbutton"><img src="images/32.png"></a>
  11. <a class="linkbutton"><img src="images/72.png"></a>
  12. </div>
  13.  
  14. <div class="content">
  15. kawaii!!! I love chibi ed!
  16. </div>


Co robię nie tak? Z góry dziękuję za pomoc!
Dox
zazwyczaj powoduje to padding i margin masz np 100% + margin czy też padding
sowiq
Po pierwsze brakuje zamknięcia elementu <div /> najwyższego poziomu - być może tylko we wklejonym przez Ciebie kodzie, ale sprawdź to.

Druga sprawa to to, że z tym height: 100% to nie jest zawsze taka oczywista sprawa. Żeby taka reguła zadziałała, element nadrzędny musi mieć zadeklarowaną wysokość (w px lub %, ale w przypadku % cała reguła powtarza się z jego nadrzędnym elementem).

Poza tym:
  1. div.comment div.avatar{
  2. ...
  3. float: left;
  4. ...
  5. }


Jeśli chcesz, żeby taki element rozciągał na wysokość swój element nadrzędny, to masz dwa wyjścia. Nadać rodzicowi taki styl:
  1. overflow: auto;

Lub przed zakończeniem rodzica dodać nowy, pusty element, ze stylem:
  1. clear: both;


Z tym, że oba sposoby są mało eleganckie smile.gif Jeśli ktoś zna lepsze, to chętnie je poznam.
Maxie
Przy obydwu zmianach wysokość tego mojego 100% nadal jest taka sama a div.comment przystosowuje się do tego. Przy czym jeżeli treść diva będzie dłuższa niż div.avatar to i tak 100% to ignoruje i nie dostosowuje się do tego.

Jakieś inne pomysły dotyczące tego trefnego 100% :/
sowiq
A czy przeczytałeś co napisałem powyżej?

Cytat
Druga sprawa to to, że z tym height: 100% to nie jest zawsze taka oczywista sprawa. Żeby taka reguła zadziałała, element nadrzędny musi mieć zadeklarowaną wysokość (w px lub %, ale w przypadku % cała reguła powtarza się z jego nadrzędnym elementem).
Maxie
W tym rzecz, że nie mogę ustalić takiej wartości bo zawartość nie jest zależna ode mnie. Jak to mogę ominąć?
sowiq
Da się to osiągnąć jeszcze w jeden sposób - robiąc kombinację position: relative; i position: absolute;.

Zerknij na to: http://jsfiddle.net/rs9xm/

Zauważ, że nigdzie nie użyłem atrybutu CSS height. Ale na pewno będziesz potrzebował min-height dla przypadków, kiedy treść posta będzie bardzo krótka.
Maxie
Pięknie dziękuję.
Oto rezultat:
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.