У меня есть два div в одном месте, и я показываю только по одному за раз. У меня есть функция, которая скрывает один div, а затем показывает другой, и наоборот. Моя проблема в том, что один из элементов div отображается в углу контейнера после того, как я скрываю его в течение 1 секунды, он изначально находится по центру, но когда я скрываю его, я устанавливаю ширину и высоту равными 0. Когда он находится в углу, стиль ушел, и я вижу только текст из него и кнопку, которую я использую, которая содержит функцию для изменения div, и она исчезает через секунду. Я не уверен, почему это происходит, и был бы признателен за помощь.
вот пример HTML этого -
<div class='event-container'>
<div class='events hidden'>
<span class='no-Events event-message'>no Events this Day</span>
<span class='event-title event-message'></span>
<span class='event-desc event-message'></span>
<button class='show-event-form rotate'>Submit</button>
</div>
<form class='new-event-form'>
<legend>Submit New Event</legend>
<input id='new-event-title' type='text' name='title' placeholder='title'>
<input id='new-event-desc' type='text' name='desc' placeholder='desc'>
<input type='submit' class='submit-event rotate' value='submit'>
</form>
</div>
Либо будет отображаться div .events, либо форма / .new-event-form будет отображаться / скрываться.
Я использую эти классы CSS, чтобы показать / скрыть их
.hidden {
height: 0; opacity: 0; width: 0;
transition: height 0ms 400ms, opacity 200ms 0ms, width 0ms 0ms;
}
.visible {
height: 100%; opacity: 1; width: 100%;
transition: height 200ms 0ms, opacity 600ms 200ms, width 0ms 0ms;
}
вот css для .new-event-form и .events
.new-event-form{
width: 100%;
display:flex;
flex-direction: column;
justify-content: space-evenly;
text-align: center;
}
.events{
height: 100%;
display:flex;
flex-direction: column;
align-items: center; /*center children vertically*/
}
И эта функция изменяет div'ы между классами show / hide
const hideShowEventsDiv = ()=> {
let eventsDiv = document.querySelector('.events');
let newEventForm = document.querySelector('.new-event-form');
if(eventsDiv.classList.contains('hidden')){
//show Events
newEventForm.classList.add('hidden');
newEventForm.classList.remove('visible');
eventsDiv.classList.remove('hidden');
eventsDiv.classList.add('visible');
} else {
//show new Event Form
eventsDiv.classList.remove('visible');
eventsDiv.classList.add('hidden');
newEventForm.classList.remove('hidden');
newEventForm.classList.add('visible');
}
}
eventListner для этого
// Отправить форму и показать событие или форму нового события
document.addEventListener('click', (e)=>{
if(e.target.classList.contains('rotate')){
e.preventDefault();
newEvent.submit();
newEvent.clear();
// ---> this one hides/shows the div
hideShowEventsDiv();
}
});
Эта проблема возникает только для Div .events. Форма .new-event-form не имеет никаких проблем с замиранием или отображением в углу, а затем исчезает, когда я пытаюсь это скрыть, то есть только .events div с этой проблемой