-
Poziome menu z efektem sliding doors
dodano 07.06.2008 / komentarzy: 5 / autor: agressiva
Stworzenie poziomego menu z tłem obrazkowym o jednakowych rozmiarach bez wzgledu na długość tekstu w środku bywa czasami kłpotliwe. Ten samouczek pokaże Wam jak bez trudności taki efekt uzyskać.
Ponad to dowiecie się w jaki sposób uzyskać jeszcze jeden cenny efekt - brak “wczytywania się” kolejnego obrazka podczas najazdu na link, czyli zastosowanie sliding doors.
Zacznijmy od ustawienia listy w pozycji horyzontalnej oraz nadaniu jej odpowiednich rozmarów.
Tak wygląda kod xHtml dla listy:<div id="menu">
<ul>
<li><a href="#">O nas</a></li>
<li><a href="#">Firma</a></li>
<li><a href="#">Referencje</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Kontakt</a></li>
<li><a href="http://vivee.info/">Vivee.info</a></li>
<li><a href="http://waterdesign.glt.pl/">Water Design</a></li>
</ul>
</div>Teraz za pomocą CSSa ustawiamy
<li>poziomo, jeden za drugim.
Są na to dwa sposoby. Jeden todisplay:inline;, ale my będziemy musieli bardziej skomplikować sprawę.
Na początek#menu linadajemyfloat:left;- dzięki temu ustawią się koło siebie jak elementy liniowe a nie blokowe. Jeżeli chcemy aby tekst w linkach wyświetlany był po środku późniejszego obrazka - nadajemy w tym samym miejscutext-align:center;Przed przejściem do następnego kroku musimy naszykować sobie nasz obrazek. Jest on dość specyficzny, bo zawiera na jednej powierzchni od razu efekt dla
a oraz a:hover. Muszą one być ustawione jeden pod drugim.
Ten przygotowany dla tego tutoriala wyglada następująco:
Tło dla
#menu ul li a:#menu ul li a {
background:url(li_a.png) no-repeat;
background-position: 0 0;
font:12px Tahoma, Arial, Helvetica, sans-serif;
color:#fff;
font-weight:bold;
text-decoration:none;
width:110px;
height:24px;
display:block;
padding:5px 0 0 0;
}Nasz wcześniej przygotowany obrazek stał się tłem ogólnym i dla
li ai dlali a:hover. Teraz w zależności który efekt tła chcemy mieć na poszczególnych wariantach należy patrzeć nabackground-position: 0 0;. W tym przypadku dla linka zaplanowany był kolor różowy obrazka, który znajduje się na górze, więc jego pozycja i pionie i w poziomie wyniosła 0. Wysokość i szerokość linka jest uzależniona od wymiarów obrazka nadanego na tło (czesc różowa lub szara). Aby to tło pojawiło się nam tak jak chcemy, należy pamiętać od dodaniadisplay:block;Podobnie postępujemy przy najeździe na linka.
CSS dla niego wygląda następująco:#menu ul li a:hover {
background:url(li_a.png) no-repeat;
background-position: 0 -29px;
color:#595959;
}background-positionw pionie oznaczony jest wartością ujemną z tego wzgledu, że część szara obrazka czyli na która pojawia się przy najeżdzie, znajduje się niżej i musi być wyniesiona (na minusie) o swoją wysokość do góry. Pamiętajcie aby przy projektowaniu tła dla linków zwrócić uwagę aby one stykały się ze sobą, bo inaczej utrudnicie sobie sprawe przy dobieraniu odpowiedniegobackground-positionTaki sposób “podkładania” tła pod linki jest o tyle korzystny, że nie powoduje nieprzyjemnego efektu “wczytywania się” inne obrazka. Dzieje się tak dlatego, że obydwa obrazki są wczytane od razu podczas pierwszego ładowania strony i zmienia się jedynie położenie tła.
Praktyczne wykorzystanie tego tutoriala możecie zobaczyć na tej stronie.
Przeczytaj też podobne wpisy:














Komentarze / dodaj komentarz
autor: Gsi
dodano: 07.06.2008
Tylko że jest błąd… daliście zamiast przykładu strony - obrazek %)
autor: agressiva
dodano: 07.06.2008
Już jest ok.
autor: Gsi
dodano: 08.06.2008
Mozna to tez zrobić za pomoca JS ;p ale ogólnie dobrze i łatwiej w css
autor: agressiva
dodano: 08.06.2008
Można, ale po co się babrać? Najwazniejsze jest jak posługiwać się pozycjonowaniem tła i alles. Nie trzeba w żaden sposob obciążać strony. To jest łatwe proste i przyjemne.
autor: pgruszkaster
dodano: 15.08.2008
Tutorial bardzo ładnie napisany, ale mam jednak mały problem. Otóż jeśli dopiszę do pierwszej pozycji paddingu zawartość ok. 13px (by tekst był mniej więcej na środku) w #menu ul li a {…} mam mały defekt
Jeśli paddingi są wyzerowane, wszytko śmiga jak szalone.
Tutaj można zobaczyć jak to wygląda jeśli padding ma wartość 13px: http://testing.ugu.pl/menu/
Napisz komentarz