Size: a a a

2020 September 22

ИМ

Игорь Морозов... in FrontCoder
Rikki Placebo
https://jsfiddle.net/watjsqe5/

Вот. При переходе от display none к display block не срабатывает transition для width и height
почему так происходит не знаю, можно просто через анимацию сделать попробовать https://jsfiddle.net/Lbr5u3t8/
источник

RP

Rikki Placebo in FrontCoder
но setTimeout криво как по мне работает
источник

ИМ

Игорь Морозов... in FrontCoder
нормально setTimeout работает =/
источник

RP

Rikki Placebo in FrontCoder
Игорь Морозов
почему так происходит не знаю, можно просто через анимацию сделать попробовать https://jsfiddle.net/Lbr5u3t8/
Все равно криво через анимацию. Только через js норм работает
источник

ИМ

Игорь Морозов... in FrontCoder
почему криво?
источник

ДБ

Дмитрий Баевский... in FrontCoder
Игорь Морозов
почему так происходит не знаю, можно просто через анимацию сделать попробовать https://jsfiddle.net/Lbr5u3t8/
Потому что при display none браузер не знает, какова высота объекта и не может ни от чего оттолкнуться. Мне так объясняли.
источник

АИ

Александр Иванов... in FrontCoder
Rikki Placebo
но setTimeout криво как по мне работает
В твоем случае надо не просто удалять класс а еще чтоб был класс после удаления активного котороый обратную анимацию сделает
источник

АИ

Александр Иванов... in FrontCoder
Как отработает удалить
источник

АИ

Александр Иванов... in FrontCoder
У тебя анимация в Активном классе
источник

АИ

Александр Иванов... in FrontCoder
Ты как активный удалишь анимация не сможет играть никак
источник

ИМ

Игорь Морозов... in FrontCoder
Rikki Placebo
Да, знаю. Нашел два решения в виде библиотеки velocity и setTimeout для промежуточных классов
вот пример я когда то делал для плавного появления/удаления попапа. Без всяких библиотек)
https://codepen.io/MynameisIM/pen/MRJOrY
источник

RP

Rikki Placebo in FrontCoder
через setTimeout сложно нормальную логику написать. Например я через js говорю ему сначала задать display block первым классом, а вторым через setTimeout 0 уже нужный transition , но в обратную сторону нужно четкий таймаут прописывать и с этим проблема
источник

АИ

Александр Иванов... in FrontCoder
Rikki Placebo
через setTimeout сложно нормальную логику написать. Например я через js говорю ему сначала задать display block первым классом, а вторым через setTimeout 0 уже нужный transition , но в обратную сторону нужно четкий таймаут прописывать и с этим проблема
Да просто все там, когда активный удаляешь делаешь другой класс который проиграет анимацию в обратном порядке, а потом после того как анимация проиграла удаляешь обратный при помощи СетТаймАут
источник

АИ

Александр Иванов... in FrontCoder
И нет проблем
источник

RP

Rikki Placebo in FrontCoder
Да, я так делал, но мне это решение кажется костылем на костыле
источник

АИ

Александр Иванов... in FrontCoder
Rikki Placebo
Да, я так делал, но мне это решение кажется костылем на костыле
Где там костыль???
источник

АИ

Александр Иванов... in FrontCoder
В том что ты удаляешь и добавляешь классы?
источник

RP

Rikki Placebo in FrontCoder
Не знаю, мне не кажется хорошим вариант через таймаут
источник

RP

Rikki Placebo in FrontCoder
При быстром переключении может сломаться вовсе
источник

RP

Rikki Placebo in FrontCoder
Ну я по крайне мере умудрялся сломать =р
источник