使用原生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 相关文章推荐
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 Javascript
jquery一般方法介绍 入门参考
Jun 21 Javascript
jQuery中index()的用法分析
Sep 05 Javascript
javascript实现checkBox的全选,反选与赋值
Mar 12 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
Jul 06 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
Oct 21 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
Oct 02 Javascript
node.js使用express框架进行文件上传详解
Mar 03 Javascript
Vue全局loading及错误提示的思路与实现
Aug 09 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
vue+iview使用树形控件的具体使用
Nov 02 Javascript
three.js中多线程的使用及性能测试详解
Jan 07 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来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
php微信开发接入
2016/08/27 PHP
PHP中-&gt;和=&gt;的含义及使用示例解析
2020/08/06 PHP
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
为原生js Array增加each方法
2012/04/07 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jquery easyui使用心得
2014/07/07 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
JavaScript中七种流行的开源机器学习框架
2018/10/11 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
解决vue 子组件修改父组件传来的props值报错问题
2019/11/09 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Python网络编程详解
2017/10/31 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
小学语文教学反思
2014/02/10 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
优秀团员事迹材料
2014/12/25 职场文书
2015个人年度工作总结范文
2015/05/28 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python