Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML]overflow:auto i position:absolute
Forum PHP.pl > Forum > Przedszkole
m72
Jak zrobić żeby div zewnętrzny automatycznie obejmował wewnętrzne które muszą mieć position:absolute ?
overflow:auto coś nie chce działać w tym przypadku

  1. <!DOCTYPE html>
  2. <meta charset="UTF-8">
  3. </head>
  4.  
  5. <div style="position:relative;background-color:#eee;width:500px;border:1px solid red;">
  6. <div style="position:absolute;top:0px; left:0px;width:100px;height:100px; background-color:#fad">1</div>
  7. <div style="position:absolute;top:0px; left:100px;width:100px;height:100px; background-color:#fdd">2</div>
  8. </div>
  9. </body>
  10. </html>
trueblue
W JS.
Dlaczego muszą być pozycjonowane absolutnie?
mrc
Musisz mieć stałą wysokość/szerokość kontenera, albo w js sprawdzać gdzie znajdują się rogi poszczególnych elementów i zrobić wysokość/szerokość taką, aby pokrywało najdalej wysunięte punkty. Inaczej tego nie zrobisz, jeżeli chcesz mieć position:absolute.
m72
positnion:absolute - bo robie na nich jquery animate.
Ogólnie sparawa wygląda tak, ładuję plik php ajaxem.
Appenduje dane do diva
  1. $('#wiecej').append(data.responseText);
(po tym dalej nie mam jeszcze jego wysokości)
Wyświetlam go
  1. $( "#wiecej" ).show( "fade", 300, function(){
  2. console.log($("#kontener_wiecej").height());
  3. $("#wizytowka_obejma").height( $("#kontener_wiecej").height() );
  4. });

i dopiero po całkowitym wyświetleniu, tak jak wyżej, można ściągnąć jego wysokość i roziciągnąć kontener (#wizytowka_obejma).
Niby działa ale powoduje to miganie div-a na ekranie bo dopiero po "show()" wysokosć kontenera jest dopasowywana.
Ja potrzebuje mieć wysokość #kontener_wiecej po załadowaniu danych ale przed wyswietleniem diva

Najlepiej jakby funkcja append miała jakiś callback ale podobno nie ma. Próbowałem load-em który ma callback ale coś mi nie wychodzi.
trueblue
Absolute nie musi być aby wywołać na elemencie animate().
Ale tu chyba nie o to chodzi, a o układ.
Najpierw pokazałeś strukturę z jednym divem i dwoma zagnieżdżonymi.
Tu wygląda jakbyś miał tylko jeden zagnieżdżony.
Napisz jaki efekt chcesz osiągnąć (jak mają być ustawione divy).
m72
Ok żeby nie bawić się w ciuciubabkę lepiej narysuję o co mi chodzi, inaczej musiałbym godzinę preparować kod pod tego posta, więc.

1. Na tle głównej strony ma wyskakiwać okienko "kontener" (div-draggable).
2. W nim mają się przesuwać względem niego 2 divy po kliku w cośtam.
4. Oczywiście tylko jeden z nich ma być widoczny a drugi ma wypadać poza kontener.
3. Zaznaczam że wszystkie dane są ładowane z pliku php a tam z bazy.

Tak jak pisałem wcześniej, niby wszystko mi działa ale wysokość div1, div2 można odczytać dopiero po wyświetleniu div-a a mi trzeba po zaappendowaniu danych ale przed wyświetleniem żebym za wczasu mógł dopasować wys kontenera który jak pisaliście nie może obejmować div-ów z position:absolute
trueblue
1. Po odpowiedzi ajax utwórz w body div.
2. Div widoczny, albo poza obszarem okna, np. position:absolute; top:-10000px
3. Wstaw do niego tekst.
4. Zmierz wysokość.
5. Usuń ten div.
Reszta już wiesz jak.
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.