JS+CSS3制作炫酷的弹窗效果


Posted in Javascript onNovember 08, 2016

昨天在家看电视时,退出的时候发现了一个弹窗效果,整个背景模糊,觉得这样的效果好炫,要比纯色加透明度高大上好多,连续试了几个界面,最终确定效果由css实现的,于是今天一大早来到公司便赶紧搜索了一下,虽然兼容性奇差,但是一个css属性就可以搞定。瞬间感觉自己知道的真是太少了~~

       首先回忆一下弹窗的实现,一般我们分为两层,弹出窗口层(popus)和遮罩层(mask),通常情况下我习惯就这两元素全部设成fixed定位,具体和absolute区别一试便知。对于mask层自不用多少,我们如下给他设置属性,让他铺满整个屏幕。

.mask{position:fixed;top:0px;bottom:0px;left:0px;right:0px;background-color:#000;opacity:0.6;filter:alpha(opacity=60)}

popus层则要稍微麻烦点儿,这里我们有两种实现方法

       1.已知大小的弹窗,如下,主要通过top,left与负的margin来实现。

.popus{width:300px;height:200px;position:fixed;left:50%;top:50%;margin-left:-150px;margin-top:-100px;background-color:#000}

      2.未知弹窗大小,则通过js获取弹窗层的width与height,然后在进行如上设置,在此不多述。

       3.在支持css3的情况下,我们不需要知道弹窗的宽高,便可进行如下设置

.popus{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%)}

     主要通过translate属性来设置,偏移的值百分比是相对于本身的宽高,因此从原理上来说跟第一种写法有异曲同工之妙,不过使用却更方便。

     言归正传,下面我们回归到正题,即让元素实现ps中高斯模糊的效果。  

    这里引出一个css属性:filter,注意这里的filter并不是ie中的filter,filter有很多值,感兴趣的可以点击这里,作者讲的非常详细。我们今天只讲其中的一个blur,首先看下面的预览图

    ps:目前来说该属性只支持webkit浏览器,所以我们直接使用了css3属性,效果也需要在webkit浏览器中查看

JS+CSS3制作炫酷的弹窗效果

      是不是很神奇,其中起作用的代码就这一行 -webkit-filter:blur(8px) ,后面的像素值即代表模糊程度,当然在日常项目中,我们还可以加一些动画,使页面更加的生动,本案例完整代码如下:

<div class='bg'>
 <img src='bg.jpg' />
</div>
<div class='popus'>
 效果是不是要好过纯色加透明呢
 <div>
 <div class='left btn '>确实不错</div>
 <div class='right btn'>也就那样</div>
 </div>
</div>

css:

*{padding:0px;margin:0px}
img{width:100%;margin:0px auto;display:block}
.bg.blur{-webkit-filter:blur(8px)}
.popus{width:400px;color:#000;;position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);font-family:"微软雅黑";padding:20px 0px;font-weight:bold;background-color:rgba(255,255,255,0.6);border-radius:18px;text-align:center;padding:30px 0px;box-shadow:0px 0px 10px rgba(0,0,0,0.4);display:none}
.popus div{width:220px;margin:10px auto}
.popus div.btn{width:80px;padding:5px 10px;color:#000}
.left{float:left;border:1px solid #000}
.popus div.btn.right{float:right;color:#666}

js:

$('.bg').on('click',function(){
 console.log(98)
 $(this).addClass('blur');
 $('.popus').show();
})
$('.btn').on('click',function(){
 $('.bg').removeClass('blur');
 $('.popus').hide();
})

      这样是不是就完了?很明显不是,看控制台

JS+CSS3制作炫酷的弹窗效果

      当我们弹出窗口外,肯定要禁止掉我们其他层的点击事件,但是我们发现目前我们虽然将其他层模糊化了,但是并没有禁止掉相应的事件,当然解决办法也很简单,我们可以加一层没有背景颜色的遮罩层,覆盖在页面上,这样我们每次点击作用在遮罩层上,自然不会触发底层的事件了。

点击这里查看效果   http://runjs.cn/detail/nrlmmnbg

以上所述是小编给大家介绍的JS+CSS3制作炫酷的弹窗效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
juqery 学习之五 文档处理 插入
Feb 11 Javascript
jQuery setTimeout()函数使用方法
Apr 07 Javascript
$.get获取一个文件的内容示例代码
Sep 11 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
JavaScript函数使用的基本教程
Jun 04 Javascript
轻松实现js图片预览功能
Jan 18 Javascript
JS双击变input框批量修改内容
Dec 12 Javascript
微信小程序获取手机系统信息的方法【附源码下载】
Dec 07 Javascript
JS基于for语句编写的九九乘法表示例
Jan 04 Javascript
Vue.js 实现数据展示全部和收起功能
Sep 05 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
Apr 29 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
Sep 26 Javascript
值得学习的bootstrap fileinput文件上传工具
Nov 08 #Javascript
BootStrap table使用方法分析
Nov 08 #Javascript
bootstrap监听滚动实现头部跟随滚动
Nov 08 #Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
Nov 08 #Javascript
bootstrapfileinput实现文件自动上传
Nov 08 #Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 #Javascript
AngularJS+Bootstrap实现多文件上传与管理
Nov 08 #Javascript
You might like
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
php使用cookie实现记住登录状态
2015/04/27 PHP
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
基于jquery实现下拉框美化特效
2016/02/02 Javascript
将json转换成struts参数的方法
2016/11/08 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
用python处理图片实现图像中的像素访问
2018/05/04 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
Python实现猜年龄游戏代码实例
2020/03/25 Python
使用pth文件添加Python环境变量方式
2020/05/26 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
英国电器零售商:PRC Direct
2018/06/21 全球购物
财务会计专业应届毕业生求职信
2013/10/18 职场文书
工程师岗位职责规定
2014/02/26 职场文书
租房协议书怎么写
2014/04/10 职场文书
学前班评语大全
2014/05/04 职场文书
重大事项社会稳定风险评估方案
2014/06/15 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
组织委员竞选稿
2015/11/21 职场文书