使用原生js实现页面蒙灰(mask)效果示例代码


Posted in Javascript onJune 20, 2014

对于web应用开发者,当用户进行界面浏览时如果后台程序处理程序时间较长,那么用户在网页的等待时间会较长,但是如果页面上没有一个比较友好的提示方式

(增加蒙灰效果),那么用户体验会不是特别良好,用户不知道现在是不是应该点击别的程序,用户并不知道是不是应该继续等待网页,还是可以点击别的页面。

现在就有一个比较良好的交互,就是增加蒙灰效果。像js的框架Extjs的mask()和unmask()功能提供了蒙灰效果,当然jquery也提供了这种蒙灰方法。在此作者希望自己也能够

使用原生的js实现自己的蒙灰效果。故自己做了尝试。实现了蒙灰效果。在此我只关注实现,页面美观程度我没有太多调整,所以页面不太美观。在此贴出实现代码。

在CODE上查看代码片派生到我的代码片

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
<TITLE> New Document </TITLE> 
<META NAME="Generator" CONTENT="EditPlus"> 
<META NAME="Author" CONTENT=""> 
<META NAME="Keywords" CONTENT=""> 
<META NAME="Description" CONTENT=""> 
<style type="text/css"> 
.maskStyle { 
background-color:#B8B8B8; 
z-index:1; 
filter:alpha(opacity=50); 
opacity:0.8; 
position:absolute; 
text-align:center; 
color:blue; 
font:bold 1em "宋体",Arial,Times; 
height:25px; 
font-weight:bold; 
overflow:hidden; 

} 
</style> 
</HEAD> 
<script type="text/javascript"> 
function creatMaskLayer(effectItem,showText) { 
divItem = document.createElement("div"); 
divItem.className="maskStyle"; 
divItem.style.lineHeight=effectItem.offsetHeight+"px"; 
divItem.innerText=showText; 
divItem.style.width=effectItem.offsetWidth; 
divItem.style.height=effectItem.offsetHeight; 
divItem.style.top=effectItem.offsetTop; 
divItem.style.left=effectItem.offsetLeft; 
return divItem; 
} 
function setMask() { 
var effectItem = document.getElementById("test"); 
var existMaskItem = findMaskItem(effectItem); 
if(existMaskItem) { 
return; 
} 
var showText = "加载中..."; 
effectItem.appendChild(creatMaskLayer(effectItem,showText)); 
} 
function removeMask() { 
var effectItem = document.getElementById("test"); 
var maskItem = findMaskItem(effectItem); 
if(maskItem) { 
effectItem.removeChild(maskItem); 
} 
} 
function findMaskItem(item) { 
var children = item.children; 
for(var i=0;i<children.length;i++) { 
if("maskStyle"==(children[i].className)) { 
return children[i]; 
} 
} 
} 
</script> 
<BODY> 
<input type="button" value="蒙灰" onclick="setMask()"/> 
<input type="button" value="取消蒙灰" onclick="removeMask()"/> 
<br> 
<div id="test" style="border:1px solid;width:300px;height:300px"> 
蒙灰我吧 
<input type="button" value="测试是否还能点击" onclick="alert('OK!')"/> 
</div> 
</BODY> 
</HTML>

解释一下代码中比较重要的地方。

.maskStyle是蒙灰层的样式

其中
在CODE上查看代码片派生到我的代码片

filter:alpha(opacity=50); 
opacity:0.8;

是代表蒙灰层透明度,filter属性是为了兼容IE8浏览器

z-index 属性设置元素的堆叠顺序。拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

PS:蒙灰效果需要把要蒙灰到element放到div中才可以

Javascript 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
JQuery获取表格数据示例代码
May 26 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
jQuery 判断是否包含在数组中Array[]的方法
Aug 03 Javascript
JS原生轮播图的简单实现(推荐)
Jul 22 Javascript
基于bootstrop常用类总结(推荐)
Sep 11 Javascript
node.js学习之事件模块Events的使用示例
Sep 28 Javascript
JavaScript实现获取select下拉框中第一个值的方法
Feb 06 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
JointJS JavaScript流程图绘制框架解析
Aug 15 Javascript
vue中添加与删除关键字搜索功能
Oct 12 Javascript
vue-列表下详情的展开与折叠案例
Jul 28 Javascript
js处理php输出时间戳对不上号的解决方法
Jun 20 #Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 #Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 #Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 #Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
Jun 20 #Javascript
Node.js实现简单聊天服务器
Jun 20 #Javascript
SuperSlide2实现图片滚动特效
Jun 20 #Javascript
You might like
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP编写daemon process详解及实例代码
2016/09/30 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
2019/03/22 PHP
javascript 特殊字符串
2009/02/25 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
js打造数组转json函数
2015/01/14 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
从Python的源码来解析Python下的freeblock
2015/05/11 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python中对数据进行各种排序的方法
2019/07/02 Python
代码实例讲解python3的编码问题
2019/07/08 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
公司保密承诺书
2014/03/27 职场文书
给学校的建议书范文
2014/05/15 职场文书
日语系毕业求职信
2014/07/27 职场文书
总结一些Java常用的加密算法
2021/06/11 Java/Android