使用jQuery制作遮罩层弹出效果的极简实例分享


Posted in Javascript onMay 12, 2016

客户的网站上突然需要一个遮罩弹窗效果,也可以称作暗箱之类的,具体效果就是网页中背景变成半透明,然后在屏幕中间出现一个菜单之类的东西。这种效果在网上很常见,例如:QQ空间浏览相册等。这种效果的好处就是,可以让用户聚焦到弹出的菜单中。

神说,有代码的文章,应该有个 Demo ,于是就有了Demo。

HTML 结构

首先先来分析一下这个过程:触发某个事件(例如点击按钮),然后出现一个背景遮罩上面还有一个内容层。触发的按钮,我在这里用 div 来代替,并且使用 click 点击事件来演示。那么我们的 HTML 结构就很明确了。

<div class="click">点击这里</div>
 <div class="click1">效果增强版的</div>
 <div class="bg"></div>
 <div class="content">这里是正文内容</div>

CSS 代码

对于遮罩效果的 CSS 代码是最关键的。遮罩用到了两个 div ,一个作为背景,要覆盖整个网页,另一个是内容显示层,通常要居中处理。

.bg{display:none;position:fixed;width:100%;height:100%;background:#000;z-index:2;top:0;left:0;opacity:0.7;}
.content{display:none;width:500px;height:300px;position:fixed;top:50%;margin-top:-150px;background:#fff;z-index:3;left:50%;margin-left:-250px;}

简单解释一下,首先要隐藏起来,之后用 jQuery 触发显示。之后指定 position 的属性为 fixed,因为这样,才能激活 top 、left 、bottom 、right 、z-index这些属性,同时可以设置 width 、height 为 100% 来实现覆盖整个网页。通常情况下,一般用 absolute 属性值来实现这种效果,因为它的兼容性更好。但是在实际应用当中,当页面很长,往下滚动的时候,使用 absolute 遮罩层也会跟随滚动。对于内容层来说,比较简单,指定宽度和高度用负边距来使其居中显示。
特别要注意一点,背景层的半透明使用的是 opacity 属性,因为使用这个属性可以更好的用 jQuery 来控制。但是 fixed 、opacity 都是早期 IE 浏览器不支持的。

jQuery 代码

分析一下遮罩的交互操作,无非就是点击弹出,然后点击一下遮罩,消失。那么就直接对 CSS 进行操作即可。

$(function(){
  $(‘.click').click(function(){
   $(‘.bg').css({‘display':'block'});
   $(‘.content').css({‘display':'block'});
  });
  $(‘.bg').click(function(){
   $(‘.bg').css({‘display':'none'});
   $(‘.content').css({‘display':'none'});
  });
 });

这里直接使用 CSS 方法,当点击的时候改变 display 属性,此外还有很多实现方法,不再赘述。完成这些,当我们点击“点击这里”之后,就可以看到效果了。
更多技巧和方法

更平缓的显示:

点击之后,突然出现并不是一个好方法。所以我又增加了一个按钮,点击之后通过 fadeIn、fadeOut 方法来控制渐隐。

$(‘.click1').click(function(){
 $(‘.bg').fadeIn(200);
 $(‘.content').fadeIn(400);
 });
 $(‘.bg').click(function(){
 $(‘.bg').fadeOut(800);
 $(‘.content').fadeOut(800);
 });

这样简单的方法,就增强了用户体验。当然,还有一些更高级的效果可以实现。

Javascript 相关文章推荐
DIV菜单层实现代码
Nov 19 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
jQuery中:file选择器用法实例
Jan 04 Javascript
JavaScript操作 url 中 search 部分方法函数
Jun 15 Javascript
AngularJS 过滤器(自带和自建)详解
Sep 19 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
vue双向数据绑定原理探究(附demo)
Jan 17 Javascript
加载 vue 远程代码的组件实例详解
Nov 20 Javascript
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
js实现页面多个日期时间倒计时效果
Jun 20 Javascript
JS函数的定义与调用方法推荐
May 12 #Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 #Javascript
JS定义类的六种方式详解
May 12 #Javascript
值得分享和收藏的Bootstrap学习教程
May 12 #Javascript
jQuery中$.each()函数的用法引申实例
May 12 #Javascript
判断JS对象是否拥有某属性的方法推荐
May 12 #Javascript
JavaScript的模块化开发框架Sea.js上手指南
May 12 #Javascript
You might like
如何分别全角和半角以避免乱码
2006/10/09 PHP
解析php入库和出库
2013/06/25 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP使用数组实现矩阵数学运算的方法示例
2017/05/29 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
网页中CDATA标记的说明
2010/09/12 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
js原型继承的两种方法对比介绍
2014/03/30 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
Python pass 语句使用示例
2014/03/11 Python
Python中__init__.py文件的作用详解
2016/09/18 Python
python修改FTP服务器上的文件名
2019/09/11 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
文秘专业自荐信
2013/10/14 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
应届毕业生应聘自荐信
2013/12/07 职场文书
微博营销计划书
2014/01/10 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
2014财务人员自我评价范文
2014/09/21 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
小学教师读书笔记
2015/07/01 职场文书
大队委员竞选稿
2015/11/20 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL