Ik werk al jaren met css hover voor lijn menu's Maar zou een vertraging willen bij het verlaten. Sommige gebruikers bewegen nogal slecht met hun muis en zodra de muis de tag verlaat is het menu weg. Als ik nu een vertraging van een (halve) seconden zou hebben dan zou het beter zijn.
Op dit moment geef je alleen aan hoe lang een animatie moet duren.
Je moet de oplossing zoeken in javascript ... het makkelijkst is jQuery.
Je zet een event listener op (de container div van) het menu. Bij een mouse out zet je na x seconden 'display' (css) op 'none', of je doet een fade-out.
?Onbekende gebruiker
15-03-2022 11:27
Volgens mij werkt het gewoon. Even een testje gedaan:
>> js wel maar zoals ik schreef zou ik een pure css oplossing willen.
Waarom zou je dat willen als js prima werkt? Js is bedoeld voor interactie en dit is een interactie vraagstuk. Er vindt een bepaalde interactie plaats tussen de gebruiker en de website: de gebruiker beweegt z'n muis buiten het menu en er moet even gewacht worden alvorens het menu wordt gesloten.
Hoe dan ook ik heb even wat speurwerk verricht en heb deze link gevonden. Wellicht kun je hier iets mee. Dit is enkel met css. Of het in alle situaties goed werkt, geen idee ... maar wellicht kun je er iets mee.
JavaScript is inmiddels natuurlijk wel iets meer dan alleen een tool voor interactie.
CSS heeft een complete animatie-module, en het is zonde om dat wiel opnieuw in JS uit te vinden, waarbij het ook nog eens trager werkt dan puur CSS. Daarom zeg ik: CSS eerst, tenzij.
Een demo ter inspiratie wat je met puur CSS kan doen: https://www.cssplay.co.uk/menu/cssplay-tic-tac-toe-v3.html
Op diezelfde site staan ook massa's voorbeelden van CSS menu's, je kan de broncode bekijken en er je voordeel mee doen: https://www.cssplay.co.uk/menus/
Als je meer visuele effecten wil kan je nog animeren met max-height op de dropdown menuutjes, al dan niet in combinatie met transform: translateY(..), etc.