Popout menu
CSS, Interactivity, Beginner

Reveals an interactive popout menu on hover and focus.

  • position: relative on the reference parent establishes a Cartesian positioning context for its child.
  • position: absolute takes the popout menu out of the flow of the document and positions it in relation to the parent.
  • left: 100% moves the the popout menu 100% of its parent's width from the left.
  • visibility: hidden hides the popout menu initially and allows for transitions (unlike display: none).
  • .reference:hover > .popout-menu means that when .reference is hovered over, select immediate children with a class of .popout-menu and change their visibility to visible, which shows the popout.
  • .reference:focus > .popout-menu means that when .reference is focused, the popout would be shown.
  • .reference:focus-within > .popout-menu ensures that the popout is shown when the focus is within the reference.
<div class="reference" tabindex="0">
                                                                    <div class="popout-menu">Popout menu</div>
                                                                  </div>
.reference {
                                                                    position: relative;
                                                                    background: tomato;
                                                                    width: 100px;
                                                                    height: 80px;
                                                                  }
                                                                  
                                                                  .popout-menu {
                                                                    position: absolute;
                                                                    visibility: hidden;
                                                                    left: 100%;
                                                                    background: #333;
                                                                    color: white;
                                                                    padding: 16px;
                                                                  }
                                                                  
                                                                  .reference:hover > .popout-menu,
                                                                  .reference:focus > .popout-menu,
                                                                  .reference:focus-within > .popout-menu {
                                                                    visibility: visible;
                                                                  }

Ⓒ Repository by Code Honchos