Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CSS]Zagnieżdżanie stylów
evolucja
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Mam takie menu:
  1. <li><a href="">A</a></li>
  2. <li><a href="" class="active">B</a></li>
  3. <li><a href="">C</a></li>
  4. <li><a href="">D</a></li>

I teraz B jest podświetlony na zielono. Po za tym wszystkie 'a' mają efekt hover podświetlający je również na zielono. Czy da się w stylach zrobić tak, aby po najechaniu np. na 'A' - 'B' straciło podświetlenie? Bo w tym momencie 2 rzeczy będą podświetlone.
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pokaż swój CSS.
Go to the top of the page
+Quote Post
evolucja
post
Post #3





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


A ma on jakieś znaczenie dla problemu? To nie mój; napisałem go tutaj, w poście:
  1. a.active { background : red;}
  2. a:hover { background : red;}
Go to the top of the page
+Quote Post
motyl-pl
post
Post #4





Grupa: Zarejestrowani
Postów: 294
Pomógł: 31
Dołączył: 2.04.2010

Ostrzeżenie: (0%)
-----


  1. <li id="a"><a href="">A</a></li>
  2. <li id="a"><a href="" class="active">B</a></li>
  3. <li><a href="">C</a></li>
  4. <li><a href="">D</a></li>


#a:hover { background-color: red; }
.active:hover { background-color: ten inny kolor; }

Ten post edytował motyl-pl 17.07.2010, 19:57:57
Go to the top of the page
+Quote Post
evolucja
post
Post #5





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Naprawdę tak bardzo niezrozumiale opisałem ten problem czy też kolego wyżej dokładnie tego nie przeczytał? (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
gigzorr
post
Post #6





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


ale jak przypisujesz do a , to chyba do wszystkich elementow nie ? albo ja sie myle.
przypisz do jednego i bedzie gitara tzn do klasy , do reszty tez mozesz cos dac.

Ten post edytował gigzorr 17.07.2010, 20:18:33
Go to the top of the page
+Quote Post
evolucja
post
Post #7





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

Ostrzeżenie: (0%)
-----


Raz jeszcze. Mam menu z 10 elementami:
  1. <li><a href="">1</a></li>
  2. <li><a href="" class="active">2</a></li>
  3. <li><a href="">3</a></li>
  4. <li><a href="">4</a></li>
  5. <li><a href="">5</a></li>
  6. <li><a href="">6</a></li>
  7. <li><a href="">7</a></li>
  8. <li><a href="">8</a></li>
  9. <li><a href="">9</a></li>
  10. <li><a href="">10</a></li>

oraz CSS:
  1. a.active { background : yellow;}
  2. a:hover { background : red;}


Efektem tego, jest podświetlony link 2 na czerwono, oraz efekt hover na wszystkich linkach podświetlających je na żółto - po najechaniu myszką na 2 on też zmieni kolor na żółty.

I teraz problem: gdy najedziesz np. na link 5 on zostanie podświetlony na żółto oraz dalej element 2 będzie podświetlony na czerwono. Mi chodzi o to, aby po aktywacji hovera na linkach nie oznaczonych jako 'active' ten jeden z 'active', w tym wypadku 2, stracił to podświetlenie na czerowno. Idąc dalej, po 'zjechaniu' myszką z tego elementu bądź całego menu żeby 2 odzyskało podświetlenie na czerwono. Inaczej mówiąc, aby w danym momencie tylko jeden link mógł być podświetlony.

Przepraszam, prościej już nie potrafię... Oczywiście bez problemu idzie to rozwiązać w JS ale chciałym się najpierw dowiedzieć czy jest to możliwe w czystym CSS.
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie możesz tego wystawić po prostu live...?

Poza tym, z tego co zrozumiałem, to bez JS się tu nie obejdzie.
Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Dopóki chcesz korzystać jedynie z CSS - nie da się. Efekt jest taki jaki masz właśnie teraz. Bo nie możesz z poziomu CSS modyfikować struktury DOM elementów. A tym byłoby usunięcie class="active" z linku. Tutaj musisz posłużyć się wspomnianym przez erixa JavaScriptem by zapamiętać link aktywny w momencie gdy myszka jest nad którymś z linków menu i usunąć go, a gdy hover spada z wszystkich elementów menu - przywrócić go zapamiętanemu linkowi.
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie tyle co chodzi mi o usuwanie, ale nie ma możliwości odwołania się do "rodzeństwa" w DOM wg takich warunków. Może dałoby się wykombinować, ale zadziała to tylko w kilku przeglądarkach.

Idealny byłby tu selektor xpath, ale w CSS go nie ma. (IMG:style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
cniak
post
Post #11





Grupa: Zarejestrowani
Postów: 169
Pomógł: 12
Dołączył: 16.09.2009

Ostrzeżenie: (0%)
-----


nie mozesz tak zrobic?

a.active {
background: green;
}

a:hover, a.active {
font-weight: bold;
}

Inny efekt. A jezeli chodzi Ci o to co piszesz wyżej to moim zdaniem to bedzie bardziej odstraszalo niz przyciagalo internaute. Czasami nie warto kombinowac (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.09.2025 - 21:30