使用原生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 相关文章推荐
用Div仿showModalDialog模式菜单的效果的代码
Mar 05 Javascript
符合W3C网页标准的iframe标签的使用方法
Jul 19 Javascript
ajax无刷新动态调用股票信息(改良版)
Nov 01 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
深入浅析JavaScript函数前面的加号和叹号
Jul 09 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
vue-simple-uploader上传成功之后的response获取代码
Sep 07 Javascript
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
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
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
JS解析XML的实现代码
2009/11/12 Javascript
js 纯数字不重复排列的另类方法
2010/07/17 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
Javascript函数中的arguments.callee用法实例分析
2016/09/16 Javascript
JS实现类似百叶窗下拉菜单效果
2016/12/30 Javascript
[原创]SyntaxHighlighter自动识别并加载脚本语言
2017/02/07 Javascript
使用jQuery实现购物车结算功能
2017/08/15 jQuery
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
解决angularJS中input标签的ng-change事件无效问题
2018/09/13 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
详解Python中heapq模块的用法
2016/06/28 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
会计工作决心书
2014/03/11 职场文书
搞笑的获奖感言
2014/08/16 职场文书
医德医风自我评价
2014/09/19 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android