Тема: toggle vanilla js
Показать сообщение отдельно
  #1 (permalink)  
Старый 28.05.2020, 19:13
Профессор
Отправить личное сообщение для dima85 Посмотреть профиль Найти все сообщения от dima85
 
Регистрация: 14.03.2010
Сообщений: 194

toggle vanilla js
Я принудительно использую таймеры который добавляют display:none.
Т.к без него скрытый блок мишает видимым объектам. Причина тому hidden { position:relative;
Если заменить его на position:absolute; Это поможет, но скрытие div тогда происходит не комильфо.

Может есть какие-то более красивые решения?


.hidden {
  opacity:0;
  position:relative;
  max-height:0px;
  margin:0 auto;
  transition:opacity .5s ease, margin .5s .3s ease, max-height .5s .2s ease;
}
.none {
 display:none !important;
}
.visible {
  opacity:1;
  position:relative;
  z-index:10;
  max-height:1800px;
  margin:20px auto;
  transition:opacity .5s .2s ease, margin .5s ease, max-height 1s ease;
}




function toggle(id){
element = document.getElementById(id);
if(element.classList.contains('visible')){
  element.classList.remove('visible');
  element.classList.add('hidden');
setTimeout(function(){
element.classList.add('none');
}, 500);
} else {
element.classList.remove('none');
setTimeout(function(){
element.classList.remove('hidden');
element.classList.add('visible');
}, 500);

}
}

<a href="#" nclick="toggle('form');return false;">toggle</a>
    <div id="form" class="none hidden">***<div>

Последний раз редактировалось dima85, 28.05.2020 в 19:21.
Ответить с цитированием