Właściwość "position: absolute" i automatyczna wyokość.

0

Siema, od razu mówię, że chyba będę miał problem z wytłumaczeniem mojego problemu, ale mam nadzieję, że ktoś to zrozumie i mi pomoże xD

W ramach ćwiczeń robię sobie prostą stronę w oparciu czystego html i css. Strona ma być zbudowana na divach z wykorzystaniem właściwości position do układania elementów (może być jeszcze ewentualnie float, ale nie np flexbox). Generalnie strona wygląda tak, że dzielę ją sobie na poszczególne sekcje, w której są inne divy z właściwością position i są one odpowiednio pozycjonowane. Chciałem zrobić coś takiego, że mam "diva głównego", w którym są obok siebie w poziomie dwa mniejsze divy. Obydwa divy zawierają tekst i mają właściwość position absolute, oraz wysokość ustawioną na auto, czyli w zależności od tego, ile będą mieć tekstu, tak będą wysokie. Tylko że problem polega na tym, że jak tekstu będzie za dużo, do div wyjdzie poza rodzica, a chciałbym, żeby rodzic też się powiększał, kiedy jakiś div jest za duży. Tyle że jak ustawię właściwość głównego diva na auto, to wtedy ten div całkowicie znika.

Chciałbym się zapytać, czy istnieje jakaś możliwość, aby div główny, który sam ma właściwość position relative i ma w sobie divy z właściwością absolute, mógł się powiększać w zależności od tego, ile tekstu będzie w wewnętrznych divach?

Żeby było łatwiej zrobiłem w JSFiddle kod. Widać tam żółtego diva głównego, a w nim dwa divy wypozycjonowane a pomocą position aboslute. Oba divy mają wysokość na auto, a div.main na 500px, tyle że jak zmienię jego właściwość na auto, to wtedy całkowicie znika.

https://jsfiddle.net/vy0sr24f/

Nie wiem czy to wszystko dobrze wytłumaczyłem, ale czy da się jakoś rozwiązać mój problem w czystym html i css?
I jeżeli nie position, to czy dałbym radę zrobić coś takiego w flexboksie?

0

kurs flexbox - https://css-tricks.com/snippets/css/a-guide-to-flexbox/

https://jsfiddle.net/mvw4nejc/1/

Nie musisz do tego używać position absolute....
Jeśli chcesz aby jakiś element miał ograniczoną wysokość ustawiasz mu max-height: wartość . Oraz dodajesz overflow: hidden, aby tekst nie wyjechał z kontenera.
Div main jeśli nie ma ustawionej wysokości(auto) to pobierze wysokość dzieci, czy w tym przypadku box1 i box2

jeśli chcesz np. aby box1 był w inym miejscu możesz mu dać np. margin-top na jakąś wartość, (nie zmieni to połozenia box2) lub użyć np. align-self (właściwość flexbox-a). np, align-self- center, co spowoduje że box1 pójdzie na środek rodzica(jeśli chodzi o położenie pionowe).

0

Tak, tylko mi właśnie chodziło o to, czy DA SIĘ to zrobić za pomocą zwykłych divów i właściwości position. Napisałeś, że jeżeli div rodzic nie ma ustawionej wysokości, to pobiera wtedy wysokość dziecka, tyle że po ustawieniu wysokości głównego diva na auto, on całkowicie znika, mimo że niebieski div ma w sobie tekst i ustawioną wysokość przez auto.

0

bo w divie tym nic nie ma. Wszystko jest pozycjonowane absolutnie, jest jakby na innym z-index. elementy absolutne są wyżej, co za tym idzie main nie ma wysokości bo w nim nic nie ma. Jak wstawisz tam normalnego div-a z jakimś tekstem to zobaczysz że main ma wysokość tego div-a. Staraj się nie używać position absolute. Więc main musi mieć określoną wysokość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1