30秒学会 CSS 片段 · 2019年3月14日

30秒学会 CSS 片段 – Popout menu

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.

预览

Popout menu



HTML

<div class="reference" tabindex="0">
  <div class="popout-menu">Popout menu</div>
</div>

CSS

.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;
}

翻译自:https://www.30secondsofcode.org/css/s/popout-menu