Анимация меню Css в меню работает только при начальной загрузке страницы и завершается неудачей, если я возвращаюсь на страницу меню

#html #css #menu #ionic4 #css-animations

#HTML #css #меню #ionic4 #css-анимации

Вопрос:

Я использую меню в своем приложении ionic, которое использует анимацию CSS. Когда страница загружается изначально, анимация меню работает нормально. Если я перехожу по ссылке, а затем возвращаюсь на страницу меню, анимация не работает. Я использую NavController push для перемещения между разными страницами. Может ли то, как вызывается страница, приводить к тому, что анимации CSS не загружаются?

HTML

 <ion-content class="bg-style" padding>

<div class="menu">
  <input type="checkbox" id="toggle" />
  <label id="show-menu" for="toggle">
    <div class="btn">
      <i class="material-icons md-36 toggleBtn menuBtn">menu</i>
      <i class="material-icons md-36 toggleBtn closeBtn">close</i>
    </div>
    <div class="btn" (click)="search()" tappable>
      <i class="material-icons md-36">search</i>
      <p>Search</p>
    </div>

    <div class="btn" (click)="account()" tappable>
      <i class="material-icons md-36">account_box</i>
      <p>Account</p>      
    </div>
    
    <div class="btn" (click)="login()" tappable>
      <i class="material-icons md-36">login</i>
      <p>Login/Join</p>   
    </div>

    <div class="btn" (click)="logout()" tappable>
      <i class="material-icons md-36">logout</i>
      <p>Logout</p>   
    </div>      

  </label>
</div>
</ion-content>
 

.TS

 @IonicPage()
@Component({
  selector: 'page-dashboard',
  templateUrl: 'dashboard.html',
})
export class DashboardPage implements OnInit {
    
  logo = 'assets/img/fixmyhomelogo.png';
  isLoggedIn: boolean;  

  constructor(public navCtrl: NavController, public afAuth: AngularFireAuth,public navParams: NavParams, private auth: AuthenticateProvider, public globe: GlobalProvider) {
      
  }
  
  ngOnInit() 
  {}    

  ionViewDidLoad() {
    console.log('ionViewDidLoad DashboardPage');
  }
  
  search()
  {
     this.navCtrl.push("SearchPage");
  }

  account()
  {
      this.navCtrl.push("MyaccountPage");   
  }

  login()
  {
      //console.log('login');
      this.navCtrl.push("UserloginPage");
      
  }

  
  logout()
  {
      this.auth.userlogOut();
      this.navCtrl.push("DashboardPage");   
  }
 

SCSS

 page-dashboard {
   .bg-style {
        background: #ffffff;
    }

    input {position: absolute; display: none}

    * {
      -webkit-touch-callout: none;
      -webkit-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      user-select: none;
    }

    .menu {
      margin: 0 auto;
      position: absolute;
      top: 50%;
      left: 50%;
      margin-left: -25px;
      margin-top: -25px;
    }

    .btn {
      width: 110px;
      height: 110px;
      border-radius: 110px;
      position: absolute;
      overflow: hidden;
      cursor: pointer;
    }

    .material-icons.md-36 { font-size: 36px; color: #1ed12e }

    .btn {
      background: #ffffff;
      font-size: 13px;
      display: -webkit-box;
      display: -ms-flexbox;
      display: flex;
      -webkit-box-pack: center;
          -ms-flex-pack: center;
              justify-content: center;
      -webkit-box-align: center;
          -ms-flex-align: center;
              align-items: center;
      
      box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
      
      -webkit-transition: all 0.3s cubic-bezier(.25,.8,.25,1);
      transition: all 0.3s cubic-bezier(.25,.8,.25,1);
    }

    .btn:not(:first-child) {
      opacity: 0;
      -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
      z-index: -2;
      
      -webkit-transition: all 0.6s cubic-bezier(.87,-.41,.19,1.44);
      transition: all 0.6s cubic-bezier(.87,-.41,.19,1.44);
    }

    .btn:nth-child(2) {top:0px;-webkit-transition-delay: 0s;transition-delay: 0s}
    .btn:nth-child(3) {top:0px;left:0px;-webkit-transition-delay: 0.1s;transition-delay: 0.1s}
    .btn:nth-child(4) {left:0px;;-webkit-transition-delay: 0.2s;;transition-delay: 0.2s}
    .btn:nth-child(5) {top:0px;left:0px;-webkit-transition-delay: 0.3s;transition-delay: 0.3s}
    .btn:nth-child(6) {top:0px;-webkit-transition-delay: 0.4s;transition-delay: 0.4s}
    .btn:nth-child(7) {top:0px;left:0px;-webkit-transition-delay: 0.5s;transition-delay: 0.5s}
    .btn:nth-child(8) {left:0px;-webkit-transition-delay: 0.6s;transition-delay: 0.6s}
    .btn:nth-child(9) {top:0px;left:0px;-webkit-transition-delay: 0.7s;transition-delay: 0.7s}

    input#toggle:checked ~ #show-menu .btn:nth-child(2) {
      top:-150px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(3) {
      top:-100px;left:100px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(4) {
      left:150px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(5) {
      top :100px;left:100px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(6) {
      top:150px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(7) {
      top:100px;left:-100px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(8) {
      left:-150px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    input#toggle:checked ~ #show-menu .btn:nth-child(9) {
      top:-100px;left:-100px;opacity:1;-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    }

    .menuBtn, .closeBtn {
      position: absolute;
      transition: all 0.3s ease;
    }

    .closeBtn {
      transform: translateY(50px);
      opacity: 0;
    }

    input#toggle:checked ~ #show-menu .btn .menuBtn {
      transform: translateY(-50px);
      opacity: 0;
    }

    input#toggle:checked ~ #show-menu .btn .closeBtn {
      transform: translateY(0px);
      opacity: 1;
    }   
    
}
 

Комментарии:

1. Есть ли пример, на который мы можем посмотреть?

2. привет @AHaworth, я получил сценарий от codepen.io/Kapilnemo/pen/gMgLWr