#javascript #html #jquery #css
#javascript #HTML #jquery #css
Вопрос:
Я собираюсь добавить некоторый переход или анимацию при переключении моего класса, например, в приведенных ниже кодах, у меня есть боковая панель, в которую я добавил немного анимации с помощью библиотеки анимации CSS. когда открывается боковая панель, я переключаю ее с помощью другого класса, анимация работает, но когда она закрывается, анимация больше не работает.
более подробно о том, что я хочу:
1- Я собираюсь, когда класс sidebar1 переключается с помощью sidebar_menu, некоторая анимация или переход увеличиваются, чтобы применить к нему, как я объяснил вверху, я имею в виду, когда боковая панель закрывается, анимация или переход увеличиваются, чтобы применить к ней
2 — все в порядке, когда открывается боковая панель, я просто хочу, чтобы боковая панель открывалась с помощью анимации, закрываясь анимацией, вот и все, извините, если я плохо объяснил. если у вас есть какие-либо вопросы, пожалуйста, задавайте, я отвечу
вот демонстрация того, что я сделал, и я думаю, что это показывает мою среднюю лучшую демонстрацию
вот мои коды JQ:
$(document).ready(function() {
$(".response_menu_icon").click(function() {
$(".sidebar1").toggleClass("sidebar_menu");
});
//
$(".response_more_icon").click(function() {
$(".area1").toggleClass("area_more");
});
});
вот мои HTML-коды:
<i data-feather="more-horizontal" class="response_more_icon"></i>
<!-- -->
<a href="" class="sidebar1 animate__animated animate__slideInRight">
<div class="sidebar_right">
<!-- -->
<h4>Dashboard</h4>
<a href=""><i data-feather="settings"></i><span>dashboard</span></a>
<!-- -->
</div>
</a>
и вот мои CSS-коды:
.sidebar1 {
display: none;
}
.sidebar_menu {
// display: none;
width: 250px;
height: 100%;
position: fixed;
top: 80px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
text-align: center;
background-color: #ffffff;
-webkit-box-shadow: -2px 10px 8px 3px #eeeeee;
-moz-box-shadow: -2px 10px 8px 3px #eeeeee;
box-shadow: -2px 10px 8px 3px #eeeeee;
}
Комментарии:
1. Я не могу найти точную библиотеку анимации, которую вы используете, но есть ли slideOut или аналогичный класс?
2. @ale-plo Я использовал эту библиотеку animate.style
3. Существует класс с именем slideOutRight, который вы можете использовать!
4. В вашем классе определена анимация, при ее удалении анимация также исчезает. Сохраняйте анимацию на цели как до, так и после щелчка, и просто измените направление анимации с помощью JavaScript с помощью click.
5. @shamsadanam да, он исчезает, но как я могу сохранить его для целевого?
Ответ №1:
Вот как, я думаю, вы могли бы это сделать. Вы проверяете, применен ли уже класс, и добавляете анимацию в зависимости от этого.
feather.replace();
$(document).ready(function() {
$(".response_menu_icon").click(function() {
if($(".sidebar1").hasClass("sidebar_menu")){
$(".sidebar1").addClass("animate__slideOutRight");
setTimeout(function(){$(".sidebar1").toggleClass("sidebar_menu");},200);
} else {
$(".sidebar1").removeClass("animate__slideOutRight");
$(".sidebar1").addClass("sidebar_menu");
$(".sidebar1").addClass("animate__slideInRight");
};
//$(".sidebar1").addClass("animate__slideOutRight");
});
//
$(".response_more_icon").click(function() {
$(".area1").toggleClass("area_more");
});
});
Я использую установленное время ожидания для удаления класса после завершения воспроизведения анимации.
Ответ №2:
Вы можете добавить свой класс с помощью jQuery или JS, и пусть ваш CSS обрабатывает ваш переход в новую позицию.
Например:
У вас есть боковая панель, которая при нажатии кнопки открывается, а затем при повторном нажатии закрывается.
CSS боковой панели будет иметь начальную точку боковой панели (т.Е. Позицию). Затем вы можете создать другой класс, который вы собираетесь добавить, в конечную позицию, которую вы хотите для своего элемента, и т.д.
//starting position is hidden off the screen
#sidebar{
position: absolute;
top: 0px;
left: -250px;
width: 250px;
height: 100vh;
background-color: blue;
transition: ease left .3s;
}
//brings the element into view when opened
#sidebar.toggled{
left: 250px;
}
Затем вы можете добавлять свои классы по мере необходимости одним нажатием кнопки.
Вот пример JSFiddle
Еще один полезный ресурс при написании кода находится в MDN. Вот ссылка, чтобы показать некоторые другие варианты использования свойства CSS Transition .