使用原生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中实现简单的tabs插件功能的代码
Mar 02 Javascript
jQuery 下拉列表 二级联动插件分享
Mar 29 Javascript
javascript中HTMLDOM操作详解
Dec 11 Javascript
JS判断字符串包含的方法
May 05 Javascript
jquery简单倒计时实现方法
Dec 18 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
浅谈react前后端同构渲染
Sep 20 Javascript
Angular浏览器插件Batarang介绍及使用
Feb 07 Javascript
jQuery分组选择器简单用法示例
Apr 04 jQuery
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
vue项目中实现缓存的最佳方案详解
Jul 11 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 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的面向对象编程
2006/10/09 PHP
Smarty Foreach 使用说明
2010/03/23 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
小程序实现留言板
2018/11/02 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
python实现数组插入新元素的方法
2015/05/22 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python将文本分每两行一组并保存到文件
2018/03/19 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
《长城》教学反思
2014/02/14 职场文书
学校清明节活动总结
2014/07/04 职场文书
大学毕业生推荐信
2014/07/09 职场文书
培训通知
2015/04/17 职场文书
公司保密管理制度
2015/08/04 职场文书