:popover-open

Avatar of Geoff Graham
Geoff Graham

DigitalOcean 提供适合旅程各个阶段的云产品。 立即开始使用 价值 200 美元的免费信用额度!

CSS :popover-open 伪类是弹出窗口 API 的一部分,用于选择 popover 元素,并在其处于“打开”状态时设置弹出窗口的样式。

/* Select any open popover */
:popover-open {
  /* Styles */
}

/* Select a specific popover */
#toggletip:popover-open {
  /* Styles */
}

一些上下文

弹出窗口 API — 在最基本层面上 — 允许我们将页面上的任何元素定义为“弹出窗口”,即通过单击另一个“目标”元素(例如,<button>(或 <input> 风格的按钮))来切换其可见性的元素。

<button popovertarget=“wave”>Say Hello</button>
<div popover id=“wave”>👋</div>

popover 元素默认情况下为 display: hidden,即其“关闭”状态。 当我们单击按钮时,popover 将以其“打开”状态弹出。

我们正在用 :popover-open 伪类讨论的正是打开状态。 它允许我们选择 popover 并仅在它处于打开状态时对其应用样式,优先于默认样式。

默认样式

您是否注意到在最后一个示例中,popover 在打开时完美地居中于页面? 我们甚至没有在那里编写任何 CSS!

与许多选择器一样,浏览器会对 [popover] 属性应用“默认”样式。 我们可以在 Chrome 开发者工具中看到它们。

[popover] {
  position: fixed;
  width: fit-content;
  height: fit-content;
  color: canvastext;
  background-color: canvas;
  inset: 0px;
  margin: auto;
  border-width: initial;
  border-style: solid;
  border-color: initial;
  border-image: initial;
  padding: 0.25em;
  overflow: auto;
}

这就是将 popover 放在页面正中央的原因,如果我们想要将其重新定位到其他位置、更改其尺寸或其他操作,我们必须覆盖它们。 :popover-open 伪元素非常适合覆盖这些样式,因为它只在 popover 处于打开状态时应用样式,优先于默认样式。

:popover-open {
  background-color: hsl(25 100% 50%);
  border: 0;
  color: hsl(300 50% 3% / .85);
  padding: 1.5rem;
  width: 25ch;
}

规范

CSS :popover-open 伪类在 HTML 标准 中定义。

浏览器支持

IEChromeEdgeFirefoxSafariOpera
11411412517101
Safari
iOS
Chrome
Android
Firefox
Android
Android
浏览器
Opera
移动
三星
互联网
171251262380125
来源:Caniuse