position-visibility
position-visibility
CSS 属性允许根据例如锚点是否超出其包含元素或视窗,有条件地隐藏锚点定位的元素。
语法
/* Single values */
position-visibility: always;
position-visibility: anchors-visible;
position-visibility: no-overflow;
/* Global values */
position-visibility: inherit;
position-visibility: initial;
position-visibility: revert;
position-visibility: revert-layer;
position-visibility: unset;
值
always
-
定位的元素始终显示。
anchors-visible
-
如果锚点完全隐藏,无论是超出其包含元素(或视窗)还是被其他元素覆盖,定位的元素将被强力隐藏。
no-overflow
-
如果定位的元素开始超出其包含元素或视窗,它将被强力隐藏。
规范还定义了 anchors-valid
值,该值尚未在任何浏览器中实现。
描述
在某些情况下,您可能不想显示锚点定位的元素。例如,如果其关联的锚点已滚动到屏幕外,但锚点定位的元素仍然部分或完全可见,则可能不清楚它指的是什么,并会占用不必要的空间,因此您可能希望完全隐藏它。
position-visibility
属性可用于always
显示锚点定位的元素,或者在关联的锚点元素完全隐藏(anchors-visible
)或锚点定位的元素本身部分隐藏(no-overflow
)时有条件地隐藏它。
当元素因 position-visibility
而隐藏时,它被称为强力隐藏。这意味着它将表现得好像它及其后代元素都具有 visibility
值 hidden
,无论其实际可见性值是什么。
position-visibility
仅应在完全隐藏定位元素是首选的情况下使用。在大多数情况下,当定位元素开始溢出时,尝试更改其位置以将其保持在屏幕上并可用更有意义。这可以通过 position-try-fallbacks
属性和 @position-try
at-rule 完成。有关更多信息,请参阅 处理溢出:尝试回退和条件隐藏 指南。
正式定义
正式语法
示例
基本用法
此示例允许更改锚点定位元素的 position-visibility
属性的值,以演示每个值的效果。
HTML
我们指定了两个 <div>
元素;一个带有 anchor
类的锚点元素和一个带有 infobox
类的定位元素。
<div class="anchor">⚓︎</div>
<div class="infobox">
<p>This is an information box.</p>
</div>
HTML 还包括填充文本,以使内容的高度超过视窗,因此需要滚动。我们还包括一个带有 <fieldset>
的 单选按钮 组,这些单选按钮具有不同的 position-visibility
值。为了简洁起见,这些标记没有显示。
CSS
我们为 anchor
<div>
设定了锚点元素的样式,并将 infobox
<div>
绑定到它。相关的 CSS 如下所示
.anchor {
anchor-name: --myAnchor;
}
.infobox {
position-anchor: --myAnchor;
position: fixed;
position-area: top span-all;
margin-bottom: 5px;
position-visibility: always;
}
JavaScript
我们为单选按钮包括一个 change
事件处理程序,以便在选择新值时,更新 infobox 的 position-visibility
属性值。
const infobox = document.querySelector(".infobox");
const radios = document.querySelectorAll('[name="position-visibility"]');
for (const radio of radios) {
radio.addEventListener("change", setPositionVisibility);
}
function setPositionVisibility(e) {
infobox.style.positionVisibility = e.target.value;
}
结果
选择不同的 position-visibility
值,然后上下滚动页面以查看其效果。设置 position-visibility: always
时,定位元素将不会被隐藏。设置 position-visibility: anchors-visible
时,定位元素仅在锚点部分或完全出现在屏幕上时可见。设置 position-visibility: no-overflow
时,定位元素一旦开始溢出视窗,就会被隐藏。
规范
规范 |
---|
CSS 锚点定位 # position-visibility |
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参阅
锚点名称
位置锚点
position
位置区域
- CSS 锚点定位 模块
- 使用 CSS 锚点定位 指南
- 处理溢出:尝试备用方案和条件隐藏 指南