问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用JS和CSS3制作炫酷的弹窗效果

发布网友 发布时间:2022-04-19 21:07

我来回答

1个回答

热心网友 时间:2022-04-06 12:46

首先回忆一下弹窗的实现,一般我们分为两层,弹出窗口层(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浏览器中查看

是不是很神奇,其中起作用的代码就这一行 -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();
})

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

当我们弹出窗口外,肯定要禁止掉我们其他层的点击事件,但是我们发现目前我们虽然将其他层模糊化了,但是并没有禁止掉相应的事件,当然解决办法也很简单,我们可以加一层没有背景颜色的遮罩层,覆盖在页面上,这样我们每次点击作用在遮罩层上,自然不会触发底层的事件了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
iOS 16.1.1值得更新升级吗 ios16.1.1正式版建议更新吗 iOS 16.1.1修复了哪些问题 ios16.1.1值得更新吗?ios 16.1.1新增内容及更新建议 iPhone 12升级iOS 16.1.1之后好用吗 iOS 16.1.1更新内容介绍 iOS 16.1正式版新增了哪些新功能?iOS 16.1正式版值得升级吗? ios 16.1正式版解决了哪些问题和BUG ...森先生是他“最好的老师” 你喜欢这样的老师吗? ... 你喜欢怀特森这样老师吗?说说你的看法.250字 招聘业务员需要问些什么问题? 应聘业务员面试的时候都会提问什么问题给你? 业务员岗位面试会问什么内容,公司 应聘外贸业务员,应该问面试官什么问题? 作为招聘方,当应聘业务员的人来面试时应该问哪些... 业务员面试问题 外贸业务员面试会问到哪些问题? 外贸业务员面试技巧和问题有哪些? 业务员遇到的一些面试问题该如何解答 外贸业务员面试时都会问哪些问题 明天要去面试了 康师傅的业务员 他们可能会面试点... 外贸业务员面试一般都会问些什么问题 面试时候问我为什么来面试业务员,我该怎么回答 一般在业务员面试的时候,面试官会问哪些问题 面试业务员应该问什么问题 面试业务员考官会问什么问题 面试业务员,面对对方的提问该怎么回答,列举几个... 怎样才能知道自己的工行卡是哪个支行开的? 业务员面试时被问的通常有哪些问题。 工商银行怎么查名下有几张卡? Eclipse平台下的java开发问题 connectify安装不上 各种建立无线热点的方法都用遍... Connectify提示升级怎么办 有谁知道浙江省VFP考试题型啊 急 thinkpad sl400,重装XP系统,在cmos中设置后,重... Streets On Fire (Feat. Product Gnb) 歌词 Streets On Fire (Superclean Version) (Feat. Pro... 扩展视幅怎么训练? LOL怎么让视野扩大?求解。 视幅拓展是什么 怎样提高看书的速度? 我想练习速读、先要扩大视幅,我每天练半小时舒尔... 提高阅读速度的五个技巧 提高阅读速度的方法 提升阅读的方法 快速阅读的训练方法有哪些 一目十行怎么练? 视觉范围扩大 舒尔特注意力要怎样教给孩子呢,今天老师教了我一... 舒尔特方格注意力训练的使用方法是什么?