🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

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

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


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

2 评论
iwanna • 2019-08-19
回复 删除

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

Vanessa • 2019-08-19
回复 删除

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