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 相关文章推荐
jquery中防刷IP流量软件影响统计的一点对策
Jul 10 Javascript
JavaScript高级程序设计 DOM学习笔记
Sep 10 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
Feb 03 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
js实现的星星评分功能函数
Dec 09 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
vue之数据交互实例代码
Jun 16 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 Javascript
js实现时分秒倒计时
Dec 03 Javascript
Vue列表如何实现滚动到指定位置样式改变效果
May 09 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
关于IIS php调用com组件的权限问题
2012/01/11 PHP
PHP的5个安全措施小结
2012/07/17 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
js获取图片大小的函数代码
2011/09/20 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
深入理解js中的加载事件
2017/02/08 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
[52:44]VGJ.T vs infamous Supermajor小组赛D组败者组第一轮 BO3 第一场 6.3
2018/06/04 DOTA
python中global用法实例分析
2015/04/30 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
Java及python正则表达式详解
2017/12/27 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
使用Keras预训练模型ResNet50进行图像分类方式
2020/05/23 Python
python 动态绘制爱心的示例
2020/09/27 Python
印度在线内衣和时尚目的地:Zivame
2017/09/28 全球购物
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
Oracle性能调优原则
2012/05/03 面试题
电子信息科学专业自荐信
2014/01/30 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
Python可变与不可变数据和深拷贝与浅拷贝
2022/04/06 Python