首页 > 解决方案 > 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>

我在这个项目中使用了角度,并且我在 .TS 文件中有一个变量,可以切换类以更改滑入/滑出。

TS

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

我非常棒,这是css的问题而不是角度方面的问题,但我仍然补充说,以防你们都想看看

标签: htmlangularcsscss-animations

解决方案


您可以添加 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>


推荐阅读