使用原生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通用的全局遍历方法$.each()用法实例
Jul 04 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
JavaScript  event对象整理及详细介绍
Oct 10 Javascript
JavaScript中 this 指向问题深度解析
Feb 21 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
Mar 02 Javascript
vue编译打包本地查看index文件的方法
Feb 23 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
Jan 24 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
layui 弹出层值回传解决方式
Nov 14 Javascript
Nuxt v-bind绑定img src不显示的解决
Dec 05 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 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
PHPwind整合最土系统用户同步登录实现方法
2010/12/08 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
浅谈PHP封装CURL
2019/03/06 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
JavaScript的面向对象编程基础
2015/08/13 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
Python+Opencv识别两张相似图片
2020/03/23 Python
python中import reload __import__的区别详解
2017/10/16 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
Django操作session 的方法
2020/03/09 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
英国标志性奢侈品牌:Burberry
2016/07/28 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
汉语专业应届生求职信
2013/10/01 职场文书
数学专业推荐信范文
2013/11/21 职场文书
yy结婚证婚词
2014/01/10 职场文书
邀请函格式范文
2015/02/02 职场文书
教师个人学习总结
2015/02/11 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
使用golang编写一个并发工作队列
2021/05/08 Golang
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB