粘性元素和 Flexbox:一个陷阱
某些 CSS 配置可能会导致意外行为。当将position:sticky与flexbox组合时,就会出现这样的一种情况。最初,粘性元素保持静止状态,直到到达指定的滚动位置,但当放置在 Flexbox 容器中时,这种行为就会停止。
问题
问题源于默认弹性盒行为。默认情况下,Flexbox 容器中的所有元素都会拉伸以适应可用空间。因此,任何粘性元素都会失去其预期功能,因为 Flexbox 容器会阻止滚动。
解决方案
要解决此问题,请添加align-self: flex-start粘性元素的属性。这会将粘性元素的高度设置为自动,允许内容自然流动并启用滚动。
浏览器兼容性
大多数主要浏览器都支持此解决方案,尽管 Safari需要使用-webkit-前缀:
.flexbox-wrapper { display: flex; } .sticky { position: -webkit-sticky; /* for Safari */ position: sticky; top: 0; align-self: flex-start; /* fix */ }
虽然Firefox不支持align-self: flex-start 属性,它不会遇到与position:sticky相同的滚动问题。此外,所有浏览器中的表格尚未完全支持position:sticky。建议谨慎使用,尤其是在满足特定浏览器要求时。
以上是为什么我的粘性元素不再粘在 Flexbox 容器内?的详细内容。更多信息请关注PHP中文网其他相关文章!