“如何加遮罩后禁止页面滚动?”关于这个问题,查找了很多网上的方案,感觉兼容性不好,下面写上我的方法,注意这里用了jquery框架
var top = 0;
$(document).scroll(function(){
if($(".mask").is(":visible")){
$(document).scrollTop(top);
}
});
/* top用来记录当前滚动条位置,所以每次$(".mask").show()时,需要使用
top = $(document).scrollTop();记录下当前的滚动条位置 */
当前网上搜索的给body加上overflow:hidden 然后 overflow:auto 也是可以的。
注意:这里用event.preventDefault()并不能阻止其默认行为,return false也是一样。
2020-09-26更新 补充:
上面的方法终究太过麻烦,补充更简单的实现方式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
.box{
width: 500px;
height: 2000px;
margin: 0 auto;
background: linear-gradient(#008000, #fff, #ff007f);
}
</style>
</head>
<body>
<div class="box" onclick="fixScroll()"></div>
<script>
var count = 0;
function fixScroll(){
if(count % 2 === 0){
document.documentElement.style.overflow = 'hidden';
document.body.style.overflow = 'hidden';
count++;
}else{
document.documentElement.style.overflow = '';
document.body.style.overflow = '';
count++;
}
}
</script>
</body>
</html>