Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
[CSS] Menu
|
Liczba postów: 13
Liczba wątków: 7
Dołączył: 10-04-2013
Reputacja:
0
Witam!
Mam taki przykład http://jsfiddle.net/yNzCj/ (HTML i CSS).
1. Jeżeli spojrzymy na rezultat to widać pod zakładką na przykład "o firmie" czerwony kreskę 3px. Nie bardzo rozumiem dlaczego jest to opisane w div#menu a nie w .podmenu - przecież zakładka O firmie znajduje się w obrębie klasy .podmenu.
2. Wiem, że pozycjonowanie absolutne to pozycjonowanie względem pojemnika w jakim się znajduje, natomiast względne to rozmieszczenie względem miejsca w jakim element znalazłby się domyślnie - natomiast nie wiem co dzieje się w przypadku z przytoczonego przykładu:
Kod: ul.podmenu ul {
margin:0px;
padding:0px;
position:absolute;
z-index:1;
list-style-type:none;
display:none;
background-color:#000000;
}
ul.podmenu ul li {
position:relative;
float:none;
border-bottom:1px solid #ffffff;
}
3. Co robi i poco jest w przykładzie z-index:1.
Z góry dziekuje za odpowiedz,
pozdrawiam,
Liczba postów: 2,411
Liczba wątków: 14
Dołączył: 10-08-2009
Reputacja:
132
1) bo tam zwyczajnie jest za dużo znaniczków. Powinno być jedno ul.menu z podlistami ul. I tyle.
2) pozycjonowanie absolutne jest względem pierwszego rodzica który ma pozycjonowanie relatywne. U ciebie LI maja relatywne, wiec ul ktore w nich leżą są pozycjonowane względem nich.
przyklad:
div.jeden <-- relatywne
----div.dwa
---------div.trzy <- absolutne
Div trzy mimo ze lezy w div.dwa bedzie pozycjonowany wzdledem div.jeden bo dopiero ten ma relatywne.
Liczba postów: 13
Liczba wątków: 7
Dołączył: 10-04-2013
Reputacja:
0
1.Czyli ul.podmenu ul li pozycjonuje ul.podmenu ul ? a co z hierarchią nie powinno być odwrotnie ?
2. Co się dzieje jak się pozycjonuje bez wartości liczbowych?
Liczba postów: 2,411
Liczba wątków: 14
Dołączył: 10-08-2009
Reputacja:
132
1)
Kod: <ul>
<li style="position:relative">
<ul class="podmenu" style="position:absolute">....</ul>
</li>
</ul>
w powyzszym przykladzie podmenu jest pozycjonowane wzgledem rodzica LI, bo ten ma position:relative. Jakby nie mial takiego pozycjonowania to to .podmenu bylo by pozycjonowane wzdlegem pierwszego jaki napotka a ktory by mial relatywne. Jakby zaden nie mial to by byl pozycjonowany wzgledem calej strony.
U ciebie to pozycjonowanie wzgledem LI jest wazne, bo dzieki temu menu jest polozone na dole DANEJ LI.
2) To wtedy jego pozycja sie nie zmienia. Ale pozycjonowanie absolutne powinno byc raczej robione z pozycjami, bo inaczej nie ma sensu.
Liczba postów: 13
Liczba wątków: 7
Dołączył: 10-04-2013
Reputacja:
0
Jeszcze jedno pytanie: rozumiem, że skoro elementy są wewnątrz div#menu to dziedziczą to co jest w div#menu - a jak tak jest to dlaczego tylko główne elementy menu je dziedziczą a reszta (pozycje rozwijane w podmenu mają formatowanie z div#menu) już nie? (mam na myśli czerwoną kreskę 3px)
Liczba postów: 2,411
Liczba wątków: 14
Dołączył: 10-08-2009
Reputacja:
132
25-06-2013, 02:08
(Ten post był ostatnio modyfikowany: 25-06-2013, 02:12 przez Kartofelek.)
Dziedziczenie =/= dziedziczenie
Przyklad:
Kod: <div class="xxx">
<div class="ppp">
<div>
<a href="">
<div>....</div>
</a>
</div>
</div>
</div>
Teraz jeżeli napiszesz
to to stylowanie bedzie sie odnosilo do wszystkich div wewnątrz .xxx (czyli nawet do tego w linku A).
To jest to twoje dziedziczenie, a tak naprawdę to styl lapie wszystkie elementy. U ciebie są to LI.
Teraz jeżeli chcesz ostylować tylko dzieci danego węzła to napiszesz:
Powyższy styl odnosić się będzie tylko do diva .ppp bo tylko on jest dzieckiem dla .xxx (czyli lezy bezposrednio w danym wezle)
Teraz przekładając to na twój przykład.
Kod: .menu li {.....} <--- styluję wszystkie li (nawet dla podmenu, bo przecież są glebiej danego wezla)
.menu .podmenu li {} <--- nadpisuje niektore wlasciwosci powyzszego stylowania (zapewne float:left dla elementow podmenu nie bedzie pasowalo)
mozna tez tak:
Kod: .menu > li {....} <---- styluje tylko glowne menu (bez .podmenu)
.menu .podmenu li {....} <------- nic nie musze nadpisywac, styluje od poczatku podmenu
Która metoda jest lepsza?
To zalezy od layouty. Jeżeli podmenu są bardzo podobne do glownego menu, wtedy v1 jest lepsza. Jezeli znacznie się różnią wyglądem, wtedy v2
Liczba postów: 13
Liczba wątków: 7
Dołączył: 10-04-2013
Reputacja:
0
Tak tylko wciąż nie wiem dlaczego
ul.podmenu ul li {
position:relative;
float:none;
border-bottom:1px solid #ffffff;
}
nie dziedziczy po div#menu border-bottom:3px solid #ff0000;
(jak usuniemy wpis border- bottom:1px solid #ffffff; to niema nic)
Liczba postów: 2,411
Liczba wątków: 14
Dołączył: 10-08-2009
Reputacja:
132
div#menu {.....}
ul.podmenu ul li {....}
pierwszy styl styluje wszystkie divy które mają id=menu
drugi styl styluje wszystkie li w podmenu.
co jedgno ma do drugiego?
Nie rozumiesz idei. W CSS NIE MA DZIEDZICZENIA.
Jest nadpisywanie.
Kod: <div></div>
<div></div>
<div></div>
<div class="dupa"></div>
div {color:red}
div.dupa {color:blue;}
wszystkie divy dostały kolor czerwony. Potem dla jednego konkretnego to nadpisujemy. I tyle.
Kod: .podmenu li {.....}
.podmenu li ul li {....}
li w podmenu dostają jakieś stylowanie. Ale chcemy dla dalszego podmenu zmienić jakąś właściwość. To ją nadpisujemy.
PS. tak naprawdę istnieje opcja dziedziczenia z rodzica. Zwie się inherit i używa się jej gdy dziecko ma coś przejąć od rodzica np color:inherit. Raczej bardzo rzadko używane.
|
Podobne wątki… |
Wątek: |
Autor |
Odpowiedzi: |
Wyświetleń: |
Ostatni post |
|
problem z tłem pod menu |
loose |
1 |
3,157 |
06-07-2017, 20:00
Ostatni post: loose
|
|
problem z menu |
p410 |
10 |
10,357 |
18-06-2017, 18:34
Ostatni post: lemans88
|
|
CSS dla menu i problem z selektorami |
neferith |
4 |
5,266 |
30-06-2016, 00:58
Ostatni post: Brain23
|
|
MENU - poważny problem wysokości! |
asus |
0 |
2,537 |
05-12-2014, 23:34
Ostatni post: asus
|
|
Trzypoziomowe menu - problem |
rejcz |
3 |
5,673 |
25-01-2014, 17:16
Ostatni post: Kartofelek
|
Użytkownicy przeglądający ten wątek:
|
|
Sponsorzy i przyjaciele
|
|
|