使用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的asp.net树实现代码
Nov 30 Javascript
利用jQuery操作对象数组的实现代码
Apr 27 Javascript
使用node.js 获取客户端信息代码分享
Nov 26 Javascript
jquery密码强度校验
Dec 02 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
js求数组中全部数字可拼接出的最大整数示例代码
Aug 25 Javascript
vue resource post请求时遇到的坑
Oct 19 Javascript
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
解决vue 绑定对象内点击事件失效问题
Sep 05 Javascript
移动端自适应flexible.js的使用方法(不用三大框架,仅写一个单html页面使用)推荐
Apr 02 Javascript
Vue项目中Api的组织和返回数据处理的操作
Nov 04 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 chmod 函数与批量修改文件目录权限
2010/05/10 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
google地图的路线实现代码
2009/08/20 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
Python占用的内存优化教程
2019/07/28 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
怎样创建、运行java程序
2014/08/01 面试题
毕业生自我鉴定实例
2014/01/21 职场文书
小区门卫值班制度
2014/01/24 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
高老头读书笔记
2015/06/30 职场文书
2015年医院保卫科工作总结
2015/07/23 职场文书