使用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 相关文章推荐
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
jQuery AjaxQueue改进步骤
Oct 06 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
Jan 12 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
javascript日期比较方法实例分析
Jun 17 Javascript
JavaScript实现DOM对象选择器
Sep 24 Javascript
javaScript实现滚动条事件详解
Mar 24 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
Nov 15 Javascript
js中对象和面向对象与Json介绍
Jan 21 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
Apr 10 Javascript
深入理解redux之compose的具体应用
Jan 12 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
php封装的数据库函数与用法示例【参考thinkPHP】
2016/11/08 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
vue的toast弹窗组件实例详解
2018/05/14 Javascript
解决Mac node版本升级失败的问题
2018/05/16 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
在Python中操作文件之read()方法的使用教程
2015/05/24 Python
python TCP Socket的粘包和分包的处理详解
2018/02/09 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python与mysql数据库交互的实现
2020/01/06 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
用python读取xlsx文件
2020/12/17 Python
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
初中班主任评语
2014/04/24 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
英语导游词
2015/02/13 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
升学宴学生致辞
2015/07/27 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python
go mod 安装依赖 unkown revision问题的解决方案
2021/05/06 Golang
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫