使用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高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
用jQuery模拟select下拉框的简单示例代码
Jan 26 Javascript
使用堆实现Top K算法(JS实现)
Dec 25 Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 Javascript
AngularJS 简单应用实例
Jul 28 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
Oct 27 Javascript
js实现小窗口拖拽效果
Dec 03 Javascript
Vue2.0系列之过滤器的使用
Mar 01 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 Javascript
JavaScript实现原型封装轮播图
Dec 27 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 读取文件头判断文件类型的实现代码
2013/08/05 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
Jquery 弹出层插件实现代码
2009/10/24 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
javascript动态的改变IFrame的高度实现自动伸展
2013/10/12 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
javascript实现判断鼠标的状态
2015/07/10 Javascript
js数组去重的方法汇总
2015/07/29 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
拖动时防止选中
2017/02/03 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
python版简单工厂模式
2017/10/16 Python
Python 字符串与数字输出方法
2018/07/16 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
Python pip使用超时问题解决方案
2020/08/03 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
2016年艾滋病宣传活动总结
2016/04/01 职场文书
升职自荐书
2019/05/09 职场文书
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript
使用numpy nonzero 找出非0元素
2021/05/14 Python