Боковая панель slideOut снова появляется

У меня есть боковая панель, которую я вставляю / убираю. Когда я выдвигаю кнопку, нажимаю, она сдвигается вправо, чтобы скрыть, но снова появляется, когда ее нужно скрыть.

Боковая панель появляется при нажатии кнопки и скрывается при нажатии значка x

CSS

.pay-storage-container {
  $inner-padding: 16px;
  height: 100vh;
  position: fixed;
  right: 0;
  top: 0;
  width: 325px;
  border: 1px solid #c0c2c7;
  z-index: 1;
  //Other subclasses
}

.showSideBar {
  animation: slideIn 1s;
}

.closeSideBar {
  animation: slideOut 1s;
}

@keyframes slideIn {
  0% {
    opacity: 0;
    transform: translateX(350px);
  }

  100% {
    opacity: 1;
    transform: translate(0);
  }
}

@keyframes slideOut {
  100% {
    opacity: 1;
    transform: translateX(350px);
  }
}

HTML

<div class = "pay-storage-container {{toggleSideBar ? 'showSideBar' : 'closeSideBar'}}">
  <div class = "header-container">
    <div class = "header">Pay Storage</div>
    <span class='close-icon csx-common_delete' (click) = "closeSideBar()"></span>
  </div>
  <div class = "pay-storage-inner">
    <div *ngIf = "paymentMessage$ | async as message">
      {{ message | json }}
    </div>
    <app-equipment-summary [equipmentSummary]='equipmentSummary'></app-equipment-summary>
    <app-credit-card #creditCardForm></app-credit-card>
    <div>
    </div>
  </div>
  <div class = "footer-container">
    <button pButton type = "button" label = "Submit Payment" class = "x-primary-green-400" [disabled]='!creditCardForm.creditCardForm.valid'
      (click) = "onSubmitPayment()"></button>
  </div>
</div>

Я использую angular в этом проекте, и у меня есть переменная в файле .TS, которая переключает классы, чтобы изменить скольжение внутрь / наружу.

TS

toggleSideBar = true;
.
.
.
closeSideBar() {
    this.toggleSideBar = false;
}

Я очень супер, это проблема с CSS, а не с угловой стороной, но я все же добавил на случай, если вы все захотите взглянуть

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете добавить animation-fill-mode: forwards; в класс closeSideBar. Это гарантирует, что анимация не будет сброшена после достижения 100%.

.pay-storage-container {
  $inner-padding: 16px;
  height: 100vh;
  position: fixed;
  right: 0;
  top: 0;
  width: 325px;
  border: 1px solid #c0c2c7;
  z-index: 1;
  //Other subclasses
}

.showSideBar {
  animation: slideIn 1s;
}

.closeSideBar {
  animation: slideOut 1s;
  animation-fill-mode: forwards;
}

@keyframes slideIn {
  0% {
    opacity: 0;
    transform: translateX(350px);
  }

  100% {
    opacity: 1;
    transform: translate(0);
  }
}

@keyframes slideOut {
  100% {
    opacity: 1;
    transform: translateX(350px);
  }
}
<div class = "pay-storage-container closeSideBar">
  <div class = "header-container">
    <div class = "header">Pay Storage</div>
    <span class='close-icon csx-common_delete' (click) = "closeSideBar()"></span>
  </div>
  <div class = "pay-storage-inner">
    <div *ngIf = "paymentMessage$ | async as message">
      {{ message | json }}
    </div>
    <app-equipment-summary [equipmentSummary]='equipmentSummary'></app-equipment-summary>
    <app-credit-card #creditCardForm></app-credit-card>
    <div>
    </div>
  </div>
  <div class = "footer-container">
    <button pButton type = "button" label = "Submit Payment" class = "x-primary-green-400" [disabled]='!creditCardForm.creditCardForm.valid'
      (click) = "onSubmitPayment()"></button>
  </div>

Вы его убиваете! Огромное спасибо. Я знал, что это было что-то простое

user10271701 29.08.2018 18:00

Другие вопросы по теме