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 相关文章推荐
javascript 打开页面window.location和window.open的区别
Mar 17 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
javascript操作table(insertRow,deleteRow,insertCell,deleteCell方法详解)
Dec 16 Javascript
jQuery动画特效实例教程
Aug 29 Javascript
js实现点击切换TAB标签实例
Aug 21 Javascript
three.js中文文档学习之创建场景
Nov 20 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
js数据类型检测总结
Aug 05 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
Jun 18 jQuery
在js文件中引入(调用)另一个js文件的三种方法
Sep 11 Javascript
js+audio实现音乐播放器
Sep 13 Javascript
详解vite2.0配置学习(typescript版本)
Feb 25 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 启动时报错的简单解决方法
2014/01/27 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
JS实现在网页中弹出一个输入框的方法
2015/03/03 Javascript
jQuery语法小结(超实用)
2015/12/31 Javascript
Angular 4依赖注入学习教程之FactoryProvider配置依赖对象(五)
2017/06/04 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
最大K个数问题的Python版解法总结
2016/06/16 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
新手学python应该下哪个版本
2020/06/11 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
Urban Outfitters美国官网:美国生活方式品牌
2016/08/26 全球购物
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
String、StringBuffer、StringBuilder有区别
2015/09/18 面试题
学生档案自我鉴定
2013/10/07 职场文书
党员年终民主评议的自我评价
2013/11/05 职场文书
研究生毕业鉴定
2014/01/29 职场文书
个人培训自我鉴定
2014/03/28 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
师德承诺书
2015/01/20 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
详解TypeScript中的类型保护
2021/04/29 Javascript
Python机器学习之PCA降维算法详解
2021/05/19 Python
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android