Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][CSS] inaczej wypozycjonować
Forum PHP.pl > Forum > Przedszkole
matistuta
witam mam problem z pozycjonowaniem. chyba to efekt wielogodzinnego siedzenia przed kompem bo problem wydaje się śmiesznie banalny, ale już nie mam siły i nerwów. przykład oczywiście w całości uproszczony. kod html wygląda tak:
Kod
<div id="top">
<img src="jakiobraz.png" id="logo" />
<div id="menu">aaa</div>
</div>

<div id="a">bbbbbbbbbbbb</div>


kod css tak:
Kod
#top{margin:0 auto 0 auto;width:980px;}
#logo{float:left;position:relative;}
#menu{float:left;position:relative;}


chodzi o to jak zrobić, aby blok o id a zostawał automatycznie przeniesiony do linjki niżej niż 'top'. w ie działa od razu jednak w reszcie trzeba kombinować.

już mówie, że overflow: auto; wszystko załatwia jednak poszukuje innego rozwiązania. wzięcie w większy blok też odpada, dawanie bloku a na position absolute też chciałbym uniknąć.

jakieś inne pomysły?
ziecio
Pewnie chodzi o clear:both a tak w ogóle to zacznij od jakiegoś kursu np. http://www.kurshtml.boo.pl/css/staly_szablon,szablon.html
zegarek84
Cytat(matistuta @ 28.10.2009, 21:00:18 ) *
chodzi o to jak zrobić, aby blok o id a zostawał automatycznie przeniesiony do linjki niżej niż 'top'. w ie działa od razu jednak w reszcie trzeba kombinować.

już mówie, że overflow: auto; wszystko załatwia jednak poszukuje innego rozwiązania. wzięcie w większy blok też odpada, dawanie bloku a na position absolute też chciałbym uniknąć.

jakieś inne pomysły?
overflow nie do tego służy ;p
nadając margines na dole 0 i jednocześnie nie nadając wysokości uzyskałeś inny efekt niż oczekiwałeś - pole jest rozciągnięte na sam dół strony (choć nie do końca bo jego marginesy) - określ wysokość lub określ większy margines (choć to nie tędy droga ;p)... ogólnie musiałbyś przedstawić graficznie do czego dążysz - ale jak zrobisz to co napisałem przerzuci treść poniżej a jednocześnie tutaj jest błąd...
lamcpp
a po co CI overflow?
Ustaw dla każdego elementu szerokość atrybut width, dla loga ustaw też wysokość.
i po co CI pozycjonowanie relatywne? jeśli chcesz zeby elementy były pod sobą to po co Ci float left;p?
wyzeruj marginesy wewnętrzne i zewnętrzne i obramowanie:
margin: 0;
padding: 0;
border: 0;
ustaw szerokość każego elementu:
width: ileśtam px;
jeśli elementów jest 2 albo więcej w kolumnie to ustaw float: left, float: right;
następnie jeśli ustawiłeś opływanie (float) to w następnym elemencie, który ma się znaleźć pod elementami z float, użyj: clear:both;

i to wszystko;p
thek
Może zgaduję, ale znając życie robi position:relative, by względem danego bloku potem pozycjonowac absolutnie jakieś elementy wewnętrzne. Bo takie jest ograniczenie position:absolute. Pozycjonują się według najbliższego przodka nie będącego position:static. A jeśli takiego nie ma to według body. Użycie relative sprawia, że potomkowie absolutni pozycjonują się wedle tego posiadającego relative smile.gif

A co do Twojego problemu, to widzę, że wszystko Ci pływa, bo zapomniałeś jednej z podstawowych rzeczy. Jeśli elementom nadałeś float, to na tym samym poziomie zagłębienia musisz dać blokadę ustawiając elementowi za "pływakami" clear:both co zauważył kolega wyżej, przy czym musi to być element blokowy. Najczęściej do tego celu używa się diva z jakąś treścią, bo wypada często akurat taki układ. Ale jeśli nie ma tam nic takiego, to tworzy się nic nie robiący element
  1. <span style="display:block; clear:both;"></span>
lub dopisuje w pliku css uniwersalną klasę:
  1. .clear {
  2. display:block;
  3. clear:both;
  4. }
i dołącza potem do elementów będących za tymi pływającymi.
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.