粘性定位使用
- 原理:
- 上层元素开启定位
- 子元素开启粘性定位(相对于上层带有定位的元素,未有定位的元素,相对于body)
- 子元素设置 bottom,top,left,right 最少任意一个数值才可生效
- 子元素设置 top: 0 时,子元素会固定在顶部
- 子元素设置 bottom: 0 时,子元素会固定在底部
- 子元素设置 left: 0 时,子元素会固定在左侧
- 子元素设置 right: 0 时,子元素会固定在右侧
楼层滚动效果
- 原理:
- 外层元素开启定位
- 内层元素开启粘性定位
- 内层元素设置 top: 0 时,当内层元素到达上层带定位的元素的顶部时,内层元素会固定在顶部
- 当向下滑动时,下一个元素还没滚上来,则不会挤走前一个元素,继续固定在这个位置
- 当向下滑动时,下一个元素滚上来了,达到了这个位置,则会挤走前一个元素,固定在这个位置(因为粘性定位同一个位置只能固定一个元素,所以会挤走前一个元素)
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
}
.container {
width: 375px;
height: 300px;
position: relative;
overflow: auto;
}
.list {
background: pink;
}
.list-content,
.list-content>div {
padding: 200px 20px;
}
.list-header {
padding: 10px;
background: #2D2D2D;
color: #FFFFFF;
font-weight: bold;
position: sticky;
top: 0px;
}
</style>
</head>
<body>
<div class="container">
<div class="list">
<div class="list-group">
<div class="list-header">A</div>
<div class="list-content">
我是内容
</div>
</div>
<div class="list-group">
<div class="list-header">B</div>
<div class="list-content">
我是内容
</div>
</div>
<div class="list-group">
<div class="list-header">C</div>
<div class="list-content">
我是内容
</div>
</div>
<div class="list-group">
<div class="list-header">D</div>
<div class="list-content">
我是内容
</div>
</div>
</div>
</div>
</body>
</html>顶部固定效果
- 原理:
- 外层元素开启定位
- 内层元素开启粘性定位
- 内层元素设置 top: 0 时,当内层元素到达上层带定位的元素的顶部时,内层元素会固定在顶部
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
}
.container {
width: 375px;
height: 300px;
position: relative;
overflow: auto;
}
.list {
background: pink;
}
.list-content,
.list-content>div {
padding: 200px 20px;
}
.list-header {
padding: 10px;
background: #2D2D2D;
color: #FFFFFF;
font-weight: bold;
position: sticky;
top: 0px;
}
</style>
</head>
<body>
<div class="container">
<div class="list">
<div class="list-group">
<div class="list-header">A</div>
<div class="list-content">
我是内容
</div>
</div>
</div>
</div>
</body>
</html>底部固定效果
- 这里要注意把元素位置挪到下面
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
margin: 0;
padding: 0;
}
.container {
width: 375px;
height: 300px;
position: relative;
overflow: auto;
}
.list {
background: pink;
}
.list-content,
.list-content>div {
padding: 200px 20px;
}
.list-header {
padding: 10px;
background: #2D2D2D;
color: #FFFFFF;
font-weight: bold;
position: sticky;
bottom: 0px;
}
</style>
</head>
<body>
<div class="container">
<div class="list">
<div class="list-group">
<div class="list-content">
我是内容
</div>
<!-- 这里要注意把元素位置挪到下面 -->
<div class="list-header">A</div>
</div>
</div>
</div>
</body>
</html>