当前位置: 首页 > Web前端 > HTML5

CSS简单的实现了弹框、输入框等的背景幕布,模仿苹果官网导航块的半透明效果

时间:2023-04-05 20:20:34 HTML5

需求总结如果我们要写一个类似弹出框效果的组件,首先简单分析一下弹出框的几个特点:弹出框必须在当前页面的顶部,等控件在弹出框关闭、焦点等操作后才能点击。为了更好的突出弹出框的效果,我们可以在除弹出框使背景的元素变得模糊、半透明、变暗等,让用户的注意力能够完全聚焦在弹出框中。弹出前:弹出后:需求分析设置弹出框到当前页面顶部很简单,我们可以很快想到用Z-index来实现,设置Z-index取一个足够大的值(取决于你项目中Z-index值的基本设计),确保它是最大的。为了防止其他元素无法点击,我们不得不在弹出框元素上做文章,这似乎不太容易实现。实现这个功能需要结合需求总结2一起思考,既然我们不仅要让其他元素不可点击,还要让弹框的背景有幕布效果,那么我们可以另外添加一个元素到弹出框,让这个元素的长宽和窗口的大小一致(也就是覆盖整个屏幕)并且确保它的Z-index也足够大,只是小了一点比弹出窗口的Z索引。这样我们得到两个元素——一个是我们的弹框,一个是我们的幕布区域(整个屏幕除了弹框的区域),做样式的时候比较简单明了设计。代码实现思路清晰之后,剩下的就是简单的代码实现,所有的效果都很简单,只要按照我们上面分析的设计来写就OK了。HTML

关闭
显示JSvarbutton=document.getElementsByTagName("button")[0];button.addEventListener("click",function(){//显示模式varele=document.getElementsByClassName("modal")[0];ele.style.visibility=`visible`;ele.style.opacity=`1`;//显示背景效果varbackdrop=document.getElementsByClassName("backdrop")[0];backdrop.style.opacity=`1`;backdrop.style.visibility=`visible`;})varclose=document.getElementById('close').addEventListener("click",function(event){//关闭模态event.target.parentNode.style.visibility=`hidden`;event.target.parentNode.style.opacity=`0`;//关闭背景效果varbackdrop=document.getElementsByClassName("backdrop")[0];backdrop.style.opacity=`0`;backdrop.style.visibility=`hidden`;})我们的窗帘效果最重要的是CSS中的设置,大家可以仔细看看CSSbody{background-color:#f4ebc1;}main{height:100vh;显示:弹性;证明内容:居中;对齐项目:居中;}.backdrop{宽度:100%;高度:100%;可见性:隐藏;不透明度:0;位置:固定;顶部:0;右:0;底部:0;左:0;背景:rgba(8、7、7、0.6);z-指数:100;过渡:所有.2s轻松;背景滤镜:饱和(180%)模糊(1px);}.backcontent{位置:绝对;顶部:70vh;宽度:80px;高度:30px;背景:白色;文本对齐:居中;行高:28px;边框:1px纯黑色;框阴影:003px#0070D2;边界半径:30px;不透明度:.85;大纲:无;}.modal{位置:绝对;左:50xw;顶部:30vh;宽度:300px;高度:150px;可见性:隐藏;不透明度:0;背景色:白色;边界半径:5px;边框:1px纯黑色;过渡:所有.2s轻松;显示:弹性;证明内容:居中;对齐项目:flex-end;z-index:9001;}#close{宽度:80px;高度:30px;背背景:白色;文本对齐:居中;行高:28px;边框:1px纯黑色;框阴影:003px#0070D2;边界半径:30px;:1rem;}苹果官网导航栏效果苹果官网导航栏的半透明效果主要是通过下面的线型backdrop-filter实现的:saturate(180%)blur(1px);透明、模糊效果background-filter主要是控制元素被元素覆盖的效果。注意,要看到这种样式带来的效果,被覆盖的元素必须有一定的半透明性(这样才能看到下层的效果)。参考:backdrop-filter的MDN文档Codepen上本Demo的代码及效果