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中Eval函数的使用
Mar 23 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
node+express+ejs制作简单页面上手指南
Nov 26 Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
Mar 02 Javascript
原生JavaScript制作计算器
Oct 16 Javascript
JavaScript表单验证完美代码
Mar 02 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
AngularJs导出数据到Excel的示例代码
Aug 11 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
Apr 25 Javascript
微信小程序实现写入读取缓存详解
Aug 30 Javascript
js实现ajax的用户简单登入功能
Jun 18 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实现处理输入转义字符的代码
2015/11/08 PHP
jQuery Selector选择器小结
2010/05/06 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
JavaScript中的alert()函数使用技巧详解
2014/12/29 Javascript
jQuery选择器querySelector的使用指南
2015/01/23 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
JS中将多个逗号替换为一个逗号的实现代码
2017/06/23 Javascript
简化vuex的状态管理方案的方法
2018/06/02 Javascript
Angular6 正则表达式允许输入部分中文字符
2018/09/10 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
使用Python的turtle模块画图的方法
2017/11/15 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
django 通过ajax完成邮箱用户注册、激活账号的方法
2018/04/17 Python
基于python批量处理dat文件及科学计算方法详解
2018/05/08 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
2020/02/17 Python
外企C语言笔试题
2013/11/10 面试题
机电一体化专业应届生求职信
2013/11/27 职场文书
个人校本研修方案
2014/05/26 职场文书
2015个人半年总结范文
2015/03/09 职场文书
复兴之路纪录片观后感
2015/06/02 职场文书
详解Python requests模块
2021/06/21 Python
python脚本框架webpy模板赋值实现
2021/11/20 Python
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL