位置:高内容的粘性中断
position: sticky breaks for tall content
我在 position: sticky
处理具有(相对)高内容的页面时遇到了一些问题。下面我设置了一个简单的页面,其中的内容模拟了一个 div 是视口高度的两倍。粘性 .palette
正确跟踪页面,直到最后几十个像素从屏幕顶部掉落。
body, html {
margin: 0;
width: 100%;
height: 100%;
background: #334;
}
.palette {
position: sticky;
top: 0;
width: 300px;
height: 20px;
background: orange;
border-radius: 5px;
margin: 10px;
}
.content {
height: 200vh;
margin: 10px;
background: #556;
border-radius: 20px;
}
<div class="palette"></div>
<div class="content"></div>
无论是使用实际内容还是设置 .content
的像素高度似乎都不会改变这种效果。调色板开始随页面滚动的底部距离似乎随视口高度而变化。
为什么我的粘性 div 粘不正确?
Position: sticky 只会漂浮在子元素上,没有父元素 div 它不会漂浮在 "content".
您可以从 this medium article
中找到有关它如何工作的很好的解释
用父 div 包装这两个 div。
工作示例:
body, html {
margin: 0;
width: 100%;
height: 100%;
background: #334;
}
.palette {
position: sticky;
top: 0;
width: 300px;
height: 20px;
background: orange;
border-radius: 5px;
margin: 10px;
}
.content {
height: 200vh;
margin: 10px;
background: #556;
border-radius: 20px;
}
<div class="wrapper">
<div class="palette"></div>
<div class="content"></div>
</div>
我在 position: sticky
处理具有(相对)高内容的页面时遇到了一些问题。下面我设置了一个简单的页面,其中的内容模拟了一个 div 是视口高度的两倍。粘性 .palette
正确跟踪页面,直到最后几十个像素从屏幕顶部掉落。
body, html {
margin: 0;
width: 100%;
height: 100%;
background: #334;
}
.palette {
position: sticky;
top: 0;
width: 300px;
height: 20px;
background: orange;
border-radius: 5px;
margin: 10px;
}
.content {
height: 200vh;
margin: 10px;
background: #556;
border-radius: 20px;
}
<div class="palette"></div>
<div class="content"></div>
无论是使用实际内容还是设置 .content
的像素高度似乎都不会改变这种效果。调色板开始随页面滚动的底部距离似乎随视口高度而变化。
为什么我的粘性 div 粘不正确?
Position: sticky 只会漂浮在子元素上,没有父元素 div 它不会漂浮在 "content".
您可以从 this medium article
中找到有关它如何工作的很好的解释用父 div 包装这两个 div。
工作示例:
body, html {
margin: 0;
width: 100%;
height: 100%;
background: #334;
}
.palette {
position: sticky;
top: 0;
width: 300px;
height: 20px;
background: orange;
border-radius: 5px;
margin: 10px;
}
.content {
height: 200vh;
margin: 10px;
background: #556;
border-radius: 20px;
}
<div class="wrapper">
<div class="palette"></div>
<div class="content"></div>
</div>