当你点击Forgot your password? Press me
时会弹出一个窗口。当它打开时,我希望背景是模糊的。我试图使用filter: blur(20px);
,但这模糊了窗口本身,这是我不想要的。
let forgotField = document.getElementById('field');
let forgot = document.getElementById('forgot');
forgot.addEventListener('click', () => {
forgotField.style.display = 'block';
});
#field {
display: none;
position: absolute;
top: 80px;
right:0;
left:0;
margin: auto;
width: 300px;
}
#content {
background-color: black;
padding: 40px;
color: white;
}
#forgot {
color: black;
}
<body id="login-section">
<section>
<a id="forgot">Forgot your password? Press me</a>
</section>
<div id="field">
<div id="content">
<p>Here you can set your password back</p>
</div>
</div>
</body>
2条答案
按热度按时间2nbm6dog1#
你只需要在一个元素上设置
blur
过滤器,这个元素是页面其余部分的父元素,但不是你的弹出窗口的父元素。这里我添加了<div id="blurme">...</div>
,其中包含主页面内容,作为#field
弹出窗口元素的兄弟元素。avkwfej42#
一种更现代的方法是使用
<dialog>
元素,并在其::backdrop
伪元素上添加模糊