
基本原理
利用CSS的 position: sticky 属性来让元素在滚动到特定位置时“吸附”在某个可视区域边界(如顶部、底部、左侧或右侧)。
3种常见应用场景
1.吸顶效果
html部份:
<header> <h1>网页头部</h1> </header> <main> <section id="section1"> <h2>内容区域1</h2> <p>这里是一些文本内容......</p> </section> <section id="section2"> <h2>内容区域2</h2> <p>这里是一些文本内容......</p> </section> <section id="section3"> <h2>内容区域3</h2> <p>这里是一些文本内容......</p> </section> </main>
css部份:
header {
position: sticky;
top: 0;
background-color: #333;
color: white;
text-align: center;
padding: 20px;
z-index: 1;
}
main {
padding: 20px;
}
section {
height: 500px;
border: 1px solid #ccc;
margin-bottom: 20px;
padding: 20px;
}2.列表标签吸附顶部
html部份:
<div class="main"> <dl> <dt>这是标签A</dt> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> </dl> <dl> <dt>这是标签B</dt> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> </dl> <dl> <dt>这是标签C</dt> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> <dd>标签栏粘贴效果</dd> </dl> </div>
css部份:
.main {
position: fixed;
width: 80%;
height: 70vh;
top: 50px;
left: 50%;
transform: translate(-50%, 0);
overflow-y: scroll;
}
dl {
border: 1px solid #ccc;
}
dt {
position: sticky;
top: 0;
color: white;
background-color: rgb(53, 50, 50);
}
dd, dt {
padding: 010px;
border-bottom: 1px solid #ccc;
}3.横向无缝滚动吸附
html部份
<div class="ads-position"> <ul> <li>Top 1</li> <li>Top 2</li> <li>Normal</li> <li>Bottom 1</li> <li>Bottom 2</li> </ul> </div>
CSS部份
.ads-position {
overflow: auto;
position: relative;
width: 400px;
height: 280px;
outline: 1px solid #3c9;
}
.ads-positionul {
padding: 200px 0;
}
.ads-positionli {
position: sticky;
height: 40px;
line-height: 40px;
text-align: center;
color: #fff;
}
.ads-positionli:nth-child(1) {
top: 0;
z-index: 9;
background-color: #f66;
}
.ads-positionli:nth-child(2) {
top: 40px;
z-index: 9;
background-color: #66f;
}
.ads-positionli:nth-child(3) {
background-color: #f90;
}
.ads-positionli:nth-child(4) {
bottom: 0;
z-index: 9;
background-color: #09f;
}
.ads-positionli:nth-child(5) {
bottom: 40px;
z-index: 9;
background-color: #3c9;
}除了用css的sticky 属性外 还有很多种方式都可以实现此效果 例如 CSS 的Scroll Snap属性 或者是固定定位fixed 都可以实现 哦!这里就不一一展示了 感兴趣的小伙伴可以自行尝试一下!










