我在学习JavaScript时遇到了一个问题。我想在打开div时制作动画,在通过单击按钮关闭它时制作动画,但只有在打开div时才有动画,而在关闭时无法制作动画,我该如何做到这一点?我还有另一个问题,即如何禁用div,而不仅仅是通过单击“x”但是当我点击屏幕上没有div的任何地方时。
let btn = document.getElementById('btn-close');
let fo = document.getElementById('fo');
let btnk = document.getElementById('btnk');
let btnk1 = document.getElementById('btnk1');
let btnk2 = document.getElementById('btnk2');
let btnk3 = document.getElementById('btnk3');
fo.style = "display: block;"
fo.classList.toggle("fo");
btn.addEventListener('click',function(){
fo.classList.toggle("fo");
});
btnk.addEventListener('click',function(){
fo.classList.toggle("fo");
});
btnk1.addEventListener('click',function(){
fo.classList.toggle("fo");
});
btnk2.addEventListener('click',function(){
fo.classList.toggle("fo");
});
btnk3.addEventListener('click',function(){
fo.classList.toggle("fo");
});
.fo{
position: fixed;
margin-left: auto;
margin-right: auto;
width: 100%;
height: 100%;
display: none;
animation: ani 0.5s ease;
}
.btn-form-close {
border: 0;
font-size: 3rem;
position: absolute;
top: -2%;
width: 0;
height: 0;
right: 10%;
line-height: normal;
cursor: pointer;
}
@keyframes ani {
0% {
transform: translateX(-850px);
}
100%{
transform: translateX(0px);
}
}
@keyframes ani2 {
0% {
transform: translateX(0px);
}
100%{
transform: translateX(850px);
}
}
<div id="fo" class="fo">
<div style="background-color: #000; transform: translate(50%,30%); border-radius: 30px; height: 70%; width: 50%;">
<button id="btn-close" style="border: 0; background-color: #000; margin-top: 2%; font-size: 3rem; color: white; float: right;"><span class="btn-form-close">×</span></button>
</div>
<button id="btnk" class="but-oferts">Otworz</button>
<button id="btnk1" class="but-oferts">Otworz</button>
<button id="btnk2" class="but-oferts">Otworz</button>
<button id="btnk3" class="but-oferts">Otworz</button>
谢谢大家的帮助!〈3
我尝试使用event.target,但它不工作。
1条答案
按热度按时间1l5u6lss1#
HTML
fo
div中添加了data属性,以跟踪它是打开还是关闭div
标记,以将它们与菜单分开CSS
id
而不是class
将fo
div作为目标#fo[data-active='false']
)JS
toggleMenu()
的函数,这样就不会重复了