使用原生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.validate使用攻略 第二部
Jul 01 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 Javascript
JavaScript获取一个范围内日期的方法
Apr 24 Javascript
js+css绘制颜色动态变化的圈中圈效果
Jan 27 Javascript
KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定
Oct 11 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
Nov 29 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
angular学习之ngRoute路由机制
Apr 12 Javascript
vue 中的keep-alive实例代码
Jul 20 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
Jul 31 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
关于svn冲突的解决方法
2013/06/21 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
php+ajax实现无刷新的新闻留言系统
2020/12/21 PHP
weiphp微信公众平台授权设置
2016/01/04 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
Mootools 1.2教程 事件处理
2009/09/15 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
vue forEach循环数组拿到自己想要的数据方法
2018/09/21 Javascript
微信小程序实现分享朋友圈的图片功能示例
2019/01/18 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
简单介绍Python中的RSS处理
2015/04/13 Python
使用python获取电脑的磁盘信息方法
2018/11/01 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
2019/09/20 Python
利用Tensorflow的队列多线程读取数据方式
2020/02/05 Python
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
爱普生美国官网:Epson美国
2018/11/05 全球购物
将"引用"作为函数返回值类型的格式、好处和需要遵守的规则
2016/02/09 面试题
几个数据库方面的面试题
2016/07/01 面试题
出纳的岗位职责
2013/11/09 职场文书
计算机专业毕业生求职信分享
2013/12/24 职场文书
促销活动方案模板
2014/02/24 职场文书
三项教育活动实施方案
2014/03/30 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
大四毕业生自荐书
2014/07/05 职场文书
医院护士工作检讨书
2014/10/26 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
索尼ICF-5900W收音机测评
2022/04/24 无线电
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS