Hej.
Jestem fanem gwałcenia CSS w celu wyeliminowania potrzeby korzystania z JS przy efektach graficznych. A przy tym staram się pisać kod z jak najmniejszą ilością znaczników. I teraz, z powodu braku selektora rodzica w CSS (chyba rok temu zostałem nabrany przez Pana w3schools to nie W3C [żeby nie wywoływać po nicku) na to, że wszedł do specki CSS 4... ), jestem zmuszony wybierać między semantyką a estetyką, chyba że może istnieje jakieś rozwiązanie?
Do rzeczy. Najpierw opiszę problem wyłącznie wirtualnie:
Muszę umieścić w <ul> znacznik <img> (ul img {} ). Mogę oczywiście zrobić zrobić li > img. Ale to <ul> to niestety jest menu, a img to tylko ozdobnik graficzny. Ozdobnik graficzny sam w sobie nie może być niestety elementem menu.
Chcę zrobić ciekawą w samym CSS. Mianowicie chcę manipulować obrazkiem przy li:hover, tak więc <img> musi się znajdować na tym samym poziomie albo niżej, a pseudoelementy odpadają (są pozycjonowane względem elementu, na którym są tworzone, a musze pozycjonować obrazek (lub jego rodzica) względem <ul> a nie <li>).
Teraz by to urzeczywistnić, podsyłam kod HTML oraz screenshot tego, co jest tymczasowo (obrazek wstawiony niepoprawnie, ponieważ jest traktowany przez semantykę, jako element menu. Linki dowolne, nie mają znaczenia. Są zdublowane, aby wypełniały miejsce - docelowo maksymalnie 8 pozycji).
<nav id="menu" class="menu">
<ul>
<li>
<a href="#">Main page</a>
</li>
<li>
<a href="#">Contact</a>
</li>
<li>
<a href="#">Links</a>
</li>
<li>
<a href="#">Blog</a>
</li>
<li>
<a href="#">Close menu</a>
</li>
<li>
<a href="#">Links</a>
</li>
<li>
<a href="#">Blog</a>
</li>
<li>
<a href="#">Close menu</a>
</li>
<li>
<img src="assets/img/menu-arrow-big.png" width="30px">
</li>
</ul>
</nav>
Screenshot: http://i.imgur.com/dZxMeEU.png
Idea jest taka, że przy najeździe na pozycję menu, obraca się w jej stronę strzałka. Wszystko w CSS przypominam. Oczywiście obrót działa. Mam tylko zagwostkę z poprawnym wstawieniem obrazka. W JS to oczywiście żaden problem, ponieważ jego DOM jest bardziej elastyczny niż ten CSS-owy, natomiast zdecyduję się na rozwiązanie JS tylko wtedy, kiedy będzie jedynym wyjściem. Zapraszam do dyskusji i proszę tylko o przemyślane odpowiedzi.