
Znowu postanowiłem coś pomajsterkować


Oczywiście pierwsza część, czyli rozwijanie niższego poziomu po kliknięciu jest dosyć proste do osiągnięcia, z pomocą przychodzi atrybut tabindex="0" dodany do elementów listy oraz selektor :focus umożliwiający zmianę reguły display. Co daje zamierzony efekt.
Problem pojawia się w drugiej części, w znikaniu pozostałych elementów listy. Pierwszy nocny pomysł to użycie selektora rodzeństwa li:focus ~ li i zmiana reguły display, chwilowa ekscytacja po wybraniu pierwszego elementu i późniejsze uświadomienie sobie, że obejmuje on jedynie rodzeństwo występujące poniżej wybranego elementu. Niestety, a może stety selektorami nie da się wrócić do węzła rodzica li:focus < ul


Wtedy zacząłem kombinować jakby wyłapać jedno kliknięcie dwa razy, skoro li to dziecko ul, to przecież kliknięcie li powinno być równocześnie wybraniem ul, no ale nie jest. Pobawiłem się trochę z-indexami i pointer-events, ale nie przyniosło oczekiwanego skutku, próbowałem wykorzystać fakt że focus elementu listy może być jednoczesnym defocusem samego ul, gdyby tylko działał autofocus... a nie jednak user i tak zostawałby bez listy po defocusowaniu




PS. Może warto byłoby przenieść forum w 10101 wiek i wprowadzić run snippet oraz inline code znane ze stacka

PPS. Tak, tak wiem, że mogłem skończyć na pierwszym akapicie