使用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 相关文章推荐
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 Javascript
基于jquery的固定表头和列头的代码
May 03 Javascript
jquery中的事件处理详细介绍
Jun 24 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
Mar 04 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
js实现延时加载Flash的方法
Nov 26 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
js实现文字截断功能
Sep 14 Javascript
详解jQuery uploadify文件上传插件的使用方法
Dec 16 Javascript
原生js实现放大镜特效
Mar 08 Javascript
Vue 2.0 服务端渲染入门介绍
Mar 29 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
Python写的贪吃蛇游戏例子
2014/06/16 Python
python批量修改文件名的实现代码
2014/09/01 Python
python 性能提升的几种方法
2016/07/15 Python
python多进程和多线程究竟谁更快(详解)
2017/05/29 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
基于python中__add__函数的用法
2019/11/25 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
企业为何需要商业计划书
2013/12/26 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
环卫处个人工作总结
2015/03/04 职场文书
个人德育工作总结
2015/03/05 职场文书
黄河绝恋观后感
2015/06/08 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
考生诚信考试承诺书(2016版)
2016/03/25 职场文书
MySQL的join buffer原理
2021/04/29 MySQL