• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Blokowanie chowana rozwijanego menu gdy input w menu posiada focus

Object Storage Arubacloud
0 głosów
417 wizyt
pytanie zadane 1 września 2017 w JavaScript przez kevin Mądrala (5,010 p.)

Witam!

Mam takie pytanie odnośnie chowania i pokazywania się rozwijanego menu.

Mam pasek nawigacyjny a w nim rozwijane menu, lista z rozwijanym menu ma domyślnie ustawiony tag display: none; gdy przycisk "dostaje" hover to tag display zmienia się na block. Gdy kursor znajduje się POZA rozwijanym menu to menu znowu dostaje tag display: none;

Problem pojawia się gdy w menu rozwijanym mam input'a i gdy ten input dostaje focus to wtedy chcę mieć tak aby nawet gdy kursor znajduje się poza rozwijanym menu to rozwijane menu jest wyświetlane. czy za pomocą samego CSS jestem w stanie coś takiego zrobić ?

Jedyne co mi przychodzi do głowy to za pomocą JavaScript/jQuery odpinać funkcję chowającą menu rozwijane gdy input dostaje focus i przypinać funkcję chowającą menu gdy input traci focus. Ale czy to jedyna droga ?

2 odpowiedzi

0 głosów
odpowiedź 1 września 2017 przez ShiroUmizake Nałogowiec (46,300 p.)
A nie łatwiej zastanowić nad rozdzieleniem komponentów? Bo trochę to według mnie nie przemyślane, bądż ustawic drugie menu z tym inputem. Tak, możesz to zrobić za pomocą JS (hover bierzę udział tylko przy najechaniu, focus to jak wskażnik(nazwijmy to tak) skupi się na elemencie0, po przez zdarzenie focus, możesz właściwie zrobić jedno zdarzenie żonglować klasą(ta która, odpowiada za menu) po przez właściwość toggle
komentarz 2 września 2017 przez kevin Mądrala (5,010 p.)
Są tutaj błędy ale pokazuję po co mi to jest potrzebne: https://jsfiddle.net/adriansikora344/1xu2mfom/
komentarz 2 września 2017 przez ShiroUmizake Nałogowiec (46,300 p.)
edycja 2 września 2017 przez ShiroUmizake
O cos takiego ci chodziło?

https://jsfiddle.net/1xu2mfom/4/

U cb był taki problem, że bardzo nastawiłeś na dziedziczenie(a właściwie) właściwości CSS (i nawet pewnie wiem z jakiego tutoriala), przez to że ustawiłeś hover , reszta elementów reagowała również, dlatego musiałem tu dodać swoją klasę oraz usunąc klasę drop-down by nie wywoływać zdarzenia hover.

Drobna uwaga. Pamiętaj obsłudze zdarzenia focus i nie twórz eventow inLine jeżeli operujesz na DOM. Ja wiem, że jquery ma bardzo nie przyjemną postać i jeszcze bardziej kompiluje kod. Ale narażasz się na dość poważną dziurę.

Musisz sobie jeszcze jedynie listę li naprawić. Ale to już tobie zostawie.

WAŻNA RZECZ. Jak piszesz w jakieś bibliotecę zaznaczaj tą informacje!
0 głosów
odpowiedź 2 września 2017 przez pablop76 VIP (123,120 p.)
Można to zrobić za pomocą samego css przy użyciu pseudo klasy :target
komentarz 2 września 2017 przez kevin Mądrala (5,010 p.)
Mógłbym jaśniej ?
komentarz 3 września 2017 przez pablop76 VIP (123,120 p.)

Można rozwinąć listę klikając na element. 

Zmiany w kodzie

<a href="#element-list" class="drop-down-btn">Rozwijane menu &#9660;</a>

oraz w css zamiast

.drop-down:hover ul
{
  display: block;
}
.drop-down ul:target
{
  display: block;
}

Pozostaje problem zwijania menu.

komentarz 3 września 2017 przez pablop76 VIP (123,120 p.)

Można dodać przycisk zamykania np:

demo

Podobne pytania

0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 18 stycznia 2019 w JavaScript przez Helio Dor Nowicjusz (230 p.)
0 głosów
1 odpowiedź 172 wizyt
pytanie zadane 16 czerwca 2018 w HTML i CSS przez przemek11 Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 673 wizyt
pytanie zadane 24 stycznia 2017 w HTML i CSS przez R.orlinski Mądrala (5,490 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...