css - 粘性元素在带有溢出的嵌套弹性容器中不起作用(野生动物园)
问题描述
我在已overflow:auto
启用的嵌套 flex 容器中遇到了这个奇怪的问题,即粘性元素。我期望粘性元素与第二个元素具有相同的高度,并且一旦滚动到阈值(top: 0
),它也会粘在其包含元素的顶部。
请注意:这种行为在 Chrome/Edge/Firefox 中很好,但在Safari中不行。
据此,sticky
应该在带有前缀的 Safari 中工作-webkit
。( https://caniuse.com/?search=sticky )
有什么好方法可以在 Safari 中完成这项工作吗?
提前致谢。
.wrapper {
height: 100px;
background-color: red;
display: flex;
}
.container {
height: 200px;
display: flex;
overflow: auto;
}
.first {
position: sticky;
position: -webkit-sticky;
top: 0;
background-color: blue;
}
.second {
background-color: yellow;
height: 500px;
}
<div class="wrapper">
<div class="container">
<div class="first">Scroll down
</div>
<div class="second">Here</div>
</div>
</div>
对于遇到类似问题并想了解粘性的人的有用链接:
解决方案
这不是问题的完整答案,因为它涉及以一种可能不适合所有情况的方式更改 HTML,但是如果我们将第一个和第二个 div 中的每一个放在它们自己的容器中,那么 Safari(在 iPad IOS 14 上测试)做预期的事情。
.wrapper {
height: 100px;
background-color: red;
display: flex;
}
.container {
height: 200px;
display: flex;
overflow: auto;
}
.first {
position: sticky;
position: -webkit-sticky;
top: 0;
background-color: blue;
}
.second {
background-color: yellow;
height: 500px;
}
<div class="wrapper">
<div class="container">
<div class="first">Scroll down</div>
</div>
<div class="container">
<div class="second">Here</div>
</div>
</div>
推荐阅读
- django - django urls.py:两个具有相似路径的模块
- haskell - Haskell elem 函数的 Big O 运行时
- python - 每次列表长度增加一定数量时做一些事情
- javascript - 如何使用 python 和 selenium 从脚本标签中获取变量?
- python - 真正有数据时,Shopify api 不返回任何内容
- ios - 使用 Titanium Appcelerator 在 iOS 上读取 NFC 标签
- pdf - Autodesk Forge 查看器:从 HTTP 打开 PDF
- javascript - 我的 Discord 音乐机器人会提前 20 秒停止歌曲
- android-studio - android studio中的代码不变
- go - 无法将 yaml 数组映射和解组到 golang 结构