Снова появляется боковая панель slideOut - PullRequest
0 голосов
/ 29 августа 2018

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

Боковая панель появляется при нажатии кнопки и скрывается при нажатии значка 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, а не с угловой стороной, но я все же добавил на тот случай, если вы захотите взглянуть

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете добавить 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>
...