Just get to the point, the key is to use the CSS adjacent sibling selector (the +
selector), child selector (the >
selector) and the new :focus-within
pseudo-class selector:
/* * Hide sub-menu(s) by default. */ nav li ul { display: none; } /* * Image 1: Adjacent sibling selector to show the * closest sub-menu when a user focuses on a menu * item link that has a sub-menu next to it. */ nav li a:focus + ul { display: block; } /* * Image 2: Child selector to show the closest sub-menu * when a user hovers on a menu item with a sub-menu. */ nav li:hover > ul { display: block; } /* * Image 3: Focus-within selector to keep the sub-menu * visibility when a user moves the focus to the sub-menu * item link(s). */ nav li:focus-within > ul { display: block; }
/* * Image 2: Child selector to keep the menu item link hover * effect when a user moves the pointer to the sub-menu. */ nav a:hover, nav li:hover > a { background: blue; }
Top comments (0)