CSS 交互 - 当鼠标移上或聚焦时弹出菜单

本贴最后更新于 1684 天前,其中的信息可能已经沧海桑田

2019-08-19

描述

当鼠标移上或聚焦时把隐藏的菜单弹出进行展示。

HTML

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

CSS

.reference {
  position: relative;
  background: tomato;
  width: 100px;
  height: 100px;
}
.popout-menu {
  position: absolute;
  visibility: hidden;
  left: 100%;
  background: #333;
  color: white;
  padding: 15px;
}
.reference:hover > .popout-menu,
.reference:focus > .popout-menu,
.reference:focus-within > .popout-menu {
  visibility: visible;
}

Demo

说明

  • position: relative 在相关的父元素上为其子元素建立笛卡尔坐标系
  • position: absolute 让弹出的菜单脱离文档流,使其可以相对于父元素进行定位
  • left: 100% 让弹出的菜单从父元素的左边向右移动 100% 的宽度,使其可以位于父元素的右侧
  • visibility: hidden 初始化时隐藏弹出的菜单,这样可以使用过渡效果。而 display: none 就无法使用过渡效果
  • .reference:hover > .popout-menu 意味着当鼠标移动到 .reference 上时,带有 .popout-menu 类的直接子元素就会修改他们的 visibility 值为 visible,从而展现出菜单
  • .reference:focus > .popout-menu 意味着当聚焦于 .reference,菜单就会显示出来
  • .reference:focus-within > .popout-menu 确保当聚焦于菜单内部的元素时,菜单也会进行显示

浏览器支持

支持率:100%

返回总目录

每天 30 秒系列之 CSS

  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 383 回帖 • 1 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    180 引用 • 446 回帖 • 4 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Vanessa

    这个没用到 JavaScript,是纯 CSS 写的。只有点击红色和弹出的菜单才不会消失。

  • 其他回帖
  • someone34810

    我点击了下 鼠标悬浮就失效了 是写了 onclick 吗 这一段没看见有这个特性啊

    1 回复
Vanessa
我们终此一生,就是要摆脱他人的期待,找到真正的自己。 昆明