<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>吸附效果</title>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
.coantiner{
width: 100%;
height: 100vh;
scroll-snap-type:y mandatory;
overflow-y: scroll;
}
.item{
width:100%;
height: 100%;
background-color: aqua;
scroll-snap-align: start;
scroll-snap-stop: always;
}
</style>
</head>
<body>
<div class="coantiner">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
<script>
let items = document.querySelectorAll('.item');
items.forEach(val => {
val.style.background = `rgb(${Math.random()*255},${Math.random()*255},${Math.random()*255})`;
});
</script>
</body>
</html>
1. 需要在父级加上:
scroll-snap-type:y mandatory;
overflow-y: scroll;2. 在子元素加上:
scroll-snap-align: start;
scroll-snap-stop: always;
说明:
属性 | 属性值 |
scroll-snap-type | x(横向),y(纵向),mandatory强制吸附 |
scroll-snap-align(吸附的位置) | start(开始位置),center(中间位置),end(结束位置) |
scroll-snap-stop | normal 可以越过元素。 always 不可越过元素。 |