【问题标题】:slideOut sidebar appears againslideOut 侧边栏再次出现
【发布时间】:2018-08-29 23:53:50
【问题描述】:

我有一个侧边栏,我正在滑入/滑出。当我按下按钮滑出时,它会向右滑动以隐藏,但在应该隐藏时再次出现。

侧边栏在按钮单击时出现,当您按下 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 的问题,而不是角度方面的问题,但我还是添加了以防你们都想看看

【问题讨论】:

    标签: html angular css css-animations


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

    【讨论】:

    • 你杀了它!非常感谢。我知道这很简单
    猜你喜欢
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多