Cet article présente principalement comment empêcher la pénétration du glissement de page via CSS. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil.
Description du problème :
Lorsqu'il y a un arrière-plan de masque fixe et un calque contextuel sur le terminal mobile, glisser sur l'écran peut faire glisser le contenu sous l'arrière-plan est le fameux problème de pénétration du défilement.
Exemple de démo :
Style :
<style> .box{ width: 100%; height: 100%; position: relative; } .dialog{ width: 100%; height: 100%; position: fixed; left: 0; top: 0; background: rgba(0,0,0,0.4); } .dia-con { width: 40vw; height: 38vw; background: white; margin: 30vh auto; } </style>
Structure :
<body> <p class="box"> <!-- 这里有非常多的文字 --> 1测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 2测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 4测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 5测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 6测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 7测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 8测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字测试文字 </p> <p class="dialog"> <p class="dia-con"> <h4>内容</h4> <button>我知道了</button> </p> </p> </body>
Exécutez le code ci-dessus sur la page mobile comme indiqué sur la figure : Lorsque vous glissez sur le masque gris, le "texte de test" ci-dessous glissera également avec lui.
Solution 1 :
Empêche le comportement par défaut des masques supérieurs. Arrêtez de bouillonner.
Exemple de démo :
<style type="text/css"> .modals button{width:100%;margin:0 auto;height:auto;line-height:30px;border:1px solid #4185F3;color:#fff;font-size:14px;background:#4185F3;margin:0 auto} .modals-body{padding:30px 15px;font-size:10px;color:#666;text-align:center;background:#fff} .sliders{cursor:not-allowed;display:block;position:fixed;overflow:hidden;z-index:103;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:rgba(20,20,20,.8)} .modals{overflow-y:auto;max-height:95%;font-size:16px;z-index:103;border-radius:5px;background:#fff;width:50%;color:#333;display:block;box-shadow:0 0 3px rgba(0,0,0,.1);position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} </style>
<body> <!--一个未知宽高的弹出框,水平垂直居中--> <p class="sliders"></p> <p class="modals"> <p class="modals-body"> 用户信息丢失,请先登录 </p> <button class="btns">确定</button> </p> <!--end--> <p class="list"></p> </body> <script src="./jquery.js"></script> <script> for(var i = 0;i<=30;i++){ $(".list").append("<p>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</p>"); } //阻止防止滚动、缩放。 $(".sliders,.modals").on("touchmove",function(event){ event.preventDefault(); }); $(".btns").on("click",function(){ $(".sliders,.modals").remove(); }); </script>
Effet de course :
Solution 2 :
Réglez d'abord le trop-plein du corps : caché pour que la partie excédentaire ne glisse pas. Lorsque le masque disparaît, réglez le débordement du corps : initial ; ou réglez-le pour qu'il défile
Exemple de démo :
<style type="text/css"> body{overflow:hidden;} .modals button{width:100%;margin:0 auto;height:auto;line-height:30px;border:1px solid #4185F3;color:#fff;font-size:14px;background:#4185F3;margin:0 auto} .modals-body{padding:30px 15px;font-size:10px;color:#666;text-align:center;background:#fff} .sliders{cursor:not-allowed;display:block;position:fixed;overflow:hidden;z-index:103;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:rgba(20,20,20,.8)} .modals{overflow-y:auto;max-height:95%;font-size:16px;z-index:103;border-radius:5px;background:#fff;width:50%;color:#333;display:block;box-shadow:0 0 3px rgba(0,0,0,.1);position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)} </style>
<body> <!--一个未知宽高的弹出框,水平垂直居中--> <p class="sliders"></p> <p class="modals"> <p class="modals-body"> 用户信息丢失,请先登录 </p> <button class="btns">确定</button> </p> <!--end--> <p class="list"></p> </body> <script src="./jquery.js"></script> <script> //解决方案一: // for(var i = 0;i<=30;i++){ // $(".list").append("<p>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</p>"); // } // //阻止防止滚动、缩放。 // $(".sliders,.modals").on("touchmove",function(event){ // event.preventDefault(); // }); // $(".btns").on("click",function(){ // $(".sliders,.modals").remove(); // }); // 解决方案 二: for(var i = 0;i<=30;i++){ $(".list").append("<p>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</p>"); } $(".btns").on("click",function(){ $(".sliders,.modals").remove(); //关键代码 $("body").css("overflow-y","initial"); }); </script>
Résumé :
Solution la plus simple :
body{ overflow: hidden; }
Ajoutez ce style au corps pour désactiver le glissement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!