使用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之水平横向滚动歌词同步的应用
May 07 Javascript
JavaScript类和继承 prototype属性
Sep 03 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
JavaScript 正则表达式中global模式的特性
Feb 25 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
Nov 30 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
Mar 22 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
从理论角度讨论JavaScript闭包
Apr 03 Javascript
JS实现选项卡效果的代码实例
May 20 Javascript
JavaScript交换两个变量方法实例
Nov 25 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 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
ThinkPHP应用模式扩展详解
2014/07/16 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
javascript判断变量是否有值的方法
2015/04/20 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
高效利用Angular中内置服务$http、$location等
2016/03/22 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
k8s node节点重新加入master集群的实现
2021/02/22 Javascript
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python实现两张图片的像素融合
2019/02/23 Python
简单了解Python3里的一些新特性
2019/07/13 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
高中生的学习总结自我鉴定
2013/10/26 职场文书
项目转让协议书
2014/10/27 职场文书
文明单位汇报材料
2014/12/24 职场文书
Python中requests做接口测试的方法
2021/05/30 Python