效果展示
實現原理
-
html結構比較簡單,即:
<div>遮罩層 <div>彈框</div> </div>
-
先寫覆蓋顯示窗口的遮罩層div.box,因為要在整個窗口顯示固定,所以position要設為fixed,background設為灰色半透明,由於要遮住整個顯示屏,width和height都設為100%(body和html的width和height也都設為100%);
-
在遮罩層的div.box里寫彈框的div.container,位置相對於父級定位
代碼實現
HTML:
1 <div> 2 <button class="open">點我彈出彈框</button> 3 </div> 4 <div class="box"> 5 <div class="container"> 6 <button class="close">關閉彈框</button> 7 </div> 8 </div>
CSS:
1 html, body { 2 width:100%; 3 height:100%; 4 } 5 .box { 6 display: none; 7 width: 100%; 8 height: 100%; 9 position: fixed; 10 top: 0; 11 left: 0; 12 background: rgba(51,51,51,0.5); 13 z-index: 3;//根據自己頁面情況設置 14 } 15 .container { 16 width: 500px; 17 height: 200px; 18 position: absolute; 19 top: 50%;//以下3行設置彈框居中頁面,根據自己頁面情況選擇 20 left: 50%; 21 transform: translate(-50%, -50%); 22 background: #fff; 23 z-index: 5;//根據自己頁面情況設置 24 }
JavaScript:
1 $(document).ready(function(){ 2 $(".open").click(function(){ 3 $(".box").show(); 4 }) 5 $(".close").click(function(){ 6 $(".box").hide(); 7 }) 8 })
原頁面內容不可滾動彈框內容可滾動
效果展示
實現原理
-
彈框內容需要滾動一定是內容超出彈框的高度,所以要給彈框內想滾動的部分設overflow: auto;
-
然后是Jq實現部分。當彈框彈出時原頁面內容不能滾動,即將body樣式設為overflow: hidden;原頁面的內容就不會動了;當彈框關閉后再將body樣式改為默認的overflow: auto;
-
2中的JS寫一個函數,再在彈框的JQ中調用函數。
代碼實現
CSS:
.container中增加一條
1 .container { 2 overflow: auto; 3 }
JavaScript:
1 function toggleBody(isPopup) { 2 if (isPopup) { 3 document.body.style.height = '100%'; 4 document.body.style.overflow = 'hidden'; 5 }else { 6 document.body.style.height = 'auto'; 7 document.body.style.overflow = 'auto'; 8 } 9 }
JQ中需要增加調用toggleBody()函數
1 $(".open").click(function(){ 2 $(".box").show(); 3 toggleBody(1);//增加部分 4 }) 5 $(".close").click(fundtion(){ 6 $(".box").hide(); 7 toggleBody(0);//增加部分 8 })
*有錯誤的地方歡迎指正
*轉載請注明出處