zoukankan      html  css  js  c++  java
  • [HTML5] Using the focus event to improve navigation accessibility (nextElementSibling)

    For a menu item, when we tab onto it, we want this element get 'focus' event, so that the submenu will show up. In the post,  we will see how to achieve it by using JS+css, we will also see how to use 'nextElementSibling' to only focus the elemnt has menu popup.

    HTML: Highlighted part is the submenue

        <nav>
          <ul class="menu">
            <li class="menu__item">
              <a href="/" class="menu__link">About</a>
            </li>
            <li class="menu__item">
              <a href="/" class="menu__link">News</a>
              <ul class="submenu">
                <li class="submenu__item">
                  <a href="/" class="submenu__link">Press Releases</a>
                </li>
                <li class="submenu__item">
                  <a href="/" class="submenu__link">Blog</a>
                </li>
              </ul>
            </li>
            <li class="menu__item">
              <a href="/" class="menu__link">Contact</a>
            </li>
          </ul>
        </nav>

    JS: We want to add 'focus' class when element get focused, in the meanwhile, we only apply focus class to the element which has 'nextElementSibling' which is <ul class="submenu">

    const topMenuLinks = document.querySelectorAll(".menu__link");
    
    topMenuLinks.forEach(link => {
      if (link.nextElementSibling) {
        link.addEventListener("focus", function() {
          this.parentElement.classList.add("focus");
        });
      }
    });

    CSS:

    .menu {
      display: flex;
      list-style: none;
    
      &__item {
        position: relative;
    
        &:hover .submenu,
        &.focus .submenu {
          transform: scaleY(1);
        }
      }
  • 相关阅读:
    Freefilesync-文件夹自动同步
    考研打卡_Day077
    考研打卡_Day076
    考研打卡_Day075
    考研打卡_Day074
    考研打卡_Day073
    考研打卡_Day072
    考研打卡_Day071
    考研打卡_Day070
    考研打卡_Day069
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10524047.html
Copyright © 2011-2022 走看看