这篇文章主要为大家详细介绍了HTML实现遮罩层的方法,Web页面中使用遮罩层,可防止重复操作,那么如何在HTML中使用遮罩层?感兴趣的小伙伴们可以参考一下。
文章转自脚本之家,作者MySomeDay ,文章地址 http://www.jb51.net/web/444162.html
Web页面中使用遮罩层,可防止重复操作,提示loading;也可以模拟弹出模态窗口。
实现思路:一个DIV作为遮罩层,一个DIV显示loading动态GIF图片。在下面的示例代码中,同时展示了如何在iframe子页面中调用显示和隐藏遮罩层。
示例代码:
index.html
1 <!DOCTYPE html>
2 <html lang="zh-CN">
3 <head>
4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Commpatible" content="IE=edge">
6 <title>HTML遮罩层</title>
7 <link rel="stylesheet" href="css/index.css">
8 </head>
9 <body>
10 <div class="header" id="header">
11 <div class="title-outer">
12 <span class="title">
13 HTML遮罩层使用
14 </span>
15 </div>
16 </div>
17 <div class="body" id="body">
18 <iframe id="iframeRight" name="iframeRight" width="100%" height="100%"
19 scrolling="no" frameborder="0"
20 style="border: 0px;margin: 0px; padding: 0px; width: 100%; height: 100%;overflow: hidden;"
21 onload="rightIFrameLoad(this)" src="body.html"></iframe>
22 </div>
23
24 <!-- 遮罩层DIV -->
25 <div id="overlay" class="overlay"></div>
26 <!-- Loading提示 DIV -->
27 <div id="loadingTip" class="loading-tip">
28 <img src="images/loading.gif" />
29 </div>
30
31 <!-- 模拟模态窗口DIV -->
32 <div class="modal" id="modalDiv"></div>
33
34 <script type='text/javascript' src="js/jquery-1.10.2.js"></script>
35 <script type="text/javascript" src="js/index.js"></script>
36 </body>
37 </html>
index.css
1 * {
2 margin: 0;
3 padding: 0;
4 }
5
6 html, body {
7 width: 100%;
8 height: 100%;
9 font-size: 14px;
10 }
11
12 div.header {
13 width: 100%;
14 height: 100px;
15 border-bottom: 1px dashed blue;
16 }
17
18 div.title-outer {
19 position: relative;
20 top: 50%;
21 height: 30px;
22 }
23 span.title {
24 text-align: left;
25 position: relative;
26 left: 3%;
27 top: -50%;
28 font-size: 22px;
29 }
30
31 div.body {
32 width: 100%;
33 }
34 .overlay {
35 position: absolute;
36 top: 0px;
37 left: 0px;
38 z-index: 10001;
39 display:none;
40 filter:alpha(opacity=60);
41 font-size: 12px !important; line-height: 1.5 !important;">#777;
42 opacity: 0.5;
43 -moz-opacity: 0.5;
44 }
45 .loading-tip {
46 z-index: 10002;
47 position: fixed;
48 display:none;
49 }
50 .loading-tip img {
51 width:100px;
52 height:100px;
53 }
54
55 .modal {
56 position:absolute;
57 width: 600px;
58 height: 360px;
59 border: 1px solid rgba(0, 0, 0, 0.2);
60 box-shadow: 0px 3px 9px rgba(0, 0, 0, 0.5);
61 display: none;
62 z-index: 10003;
63 border-radius: 6px;
64 }
65
index.js
1 function rightIFrameLoad(iframe) {
2 var pHeight = getWindowInnerHeight() - $('#header').height() - 5;
3
4 $('div.body').height(pHeight);
5 console.log(pHeight);
6
7 }
8
9 // 浏览器兼容 取得浏览器可视区高度
10 function getWindowInnerHeight() {
11 var winHeight = window.innerHeight
12 || (document.documentElement && document.documentElement.clientHeight)
13 || (document.body && document.body.clientHeight);
14 return winHeight;
15
16 }
17
18 // 浏览器兼容 取得浏览器可视区宽度
19 function getWindowInnerWidth() {
20 var winWidth = window.innerWidth
21 || (document.documentElement && document.documentElement.clientWidth)
22 || (document.body && document.body.clientWidth);
23 return winWidth;
24
25 }
26
27 /**
28 * 显示遮罩层
29 */
30 function showOverlay() {
31 // 遮罩层宽高分别为页面内容的宽高
32 $('.overlay').css({'height':$(document).height(),'width':$(document).width()});
33 $('.overlay').show();
34 }
35
36 /**
37 * 显示Loading提示
38 */
39 function showLoading() {
40 // 先显示遮罩层
41 showOverlay();
42 // Loading提示窗口居中
43 $("#loadingTip").css('top',
44 (getWindowInnerHeight() - $("#loadingTip").height()) / 2 + 'px');
45 $("#loadingTip").css('left',
46 (getWindowInnerWidth() - $("#loadingTip").width()) / 2 + 'px');
47
48 $("#loadingTip").show();
49 $(document).scroll(function() {
50 return false;
51 });
52 }
53
54 /**
55 * 隐藏Loading提示
56 */
57 function hideLoading() {
58 $('.overlay').hide();
59 $("#loadingTip").hide();
60 $(document).scroll(function() {
61 return true;
62 });
63 }
64
65 /**
66 * 模拟弹出模态窗口DIV
67 * @param innerHtml 模态窗口HTML内容
68 */
69 function showModal(innerHtml) {
70 // 取得显示模拟模态窗口用DIV
71 var dialog = $('#modalDiv');
72
73 // 设置内容
74 dialog.html(innerHtml);
75
76 // 模态窗口DIV窗口居中
77 dialog.css({
78 'top' : (getWindowInnerHeight() - dialog.height()) / 2 + 'px',
79 'left' : (getWindowInnerWidth() - dialog.width()) / 2 + 'px'
80 });
81
82 // 窗口DIV圆角
83 dialog.find('.modal-container').css('border-radius','6px');
84
85 // 模态窗口关闭按钮事件
86 dialog.find('.btn-close').click(function(){
87 closeModal();
88 });
89
90 // 显示遮罩层
91 showOverlay();
92
93 // 显示遮罩层
94 dialog.show();
95 }
96
97 /**
98 * 模拟关闭模态窗口DIV
99 */
100 function closeModal() {
101 $('.overlay').hide();
102 $('#modalDiv').hide();
103 $('#modalDiv').html('');
104 }
body.html
1 <!DOCTYPE html>
2 <html lang="zh-CN">
3 <head>
4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Commpatible" content="IE=edge">
6 <title>body 页面</title>
7 <style type="text/css">
8 * {
9 margin: 0;
10 padding: 0;
11 }
12
13 html, body {
14 width: 100%;
15 height: 100%;
16 }
17
18 .outer {
19 width: 200px;
20 height: 120px;
21 position: relative;
22 top: 50%;
23 left: 50%;
24 }
25
26 .inner {
27 width: 200px;
28 height: 120px;
29 position: relative;
30 top: -50%;
31 left: -50%;
32 }
33
34 .button {
35 width: 200px;
36 height: 40px;
37 position: relative;
38 }
39
40 .button#btnShowLoading {
41 top: 0;
42 }
43
44 .button#btnShowModal {
45 top: 30%;
46 }
47
48 </style>
49 <script type="text/javascript">
50
51 function showOverlay() {
52 // 调用父窗口显示遮罩层和Loading提示
53 window.top.window.showLoading();
54
55 // 使用定时器模拟关闭Loading提示
56 setTimeout(function() {
57 window.top.window.hideLoading();
58 }, 3000);
59
60 }
61
62 function showModal() {
63 // 调用父窗口方法模拟弹出模态窗口
64 window.top.showModal($('#modalContent').html());
65 }
66
67 </script>
68 </head>
69 <body>
70 <div class='outer'>
71 <div class='inner'>
72 <button id='btnShowLoading' class='button' onclick='showOverlay();'>点击弹出遮罩层</button>
73 <button id='btnShowModal' class='button' onclick='showModal();'>点击弹出模态窗口</button>
74 </div>
75 </div>
76
77 <!-- 模态窗口内容DIV,将本页面DIV内容设置到父窗口DIV上并模态显示 -->
78 <div id='modalContent' style='display: none;'>
79 <div class='modal-container' style='width: 100%;height: 100%;background-color: white;'>
80 <div style='width: 100%;height: 49px;position: relative;left: 50%;top: 50%;'>
81 <span style='font-size: 36px; width: 100%; text-align:center; display: inline-block; position:inherit; left: -50%;top: -50%;'>模态窗口1</span>
82 </div>
83 <button class='btn-close' style='width: 100px; height: 30px; position: absolute; right: 30px; bottom: 20px;'>关闭</button>
84 </div>
85 </div>
86 <script type='text/javascript' src="js/jquery-1.10.2.js"></script>
87 </body>
88 </html>
89
运行结果:
初始化
显示遮罩层和Loading提示
显示遮罩层和模拟弹出模态窗口