Ionic 2 login popup using Modal and styling

后端 未结 4 2503
小蘑菇
小蘑菇 2021-02-05 12:58

I have a projet where i want to use this type of login :

I have set up a modal correctly and i can dismiss it with no problem, but my problem is that it take th

4条回答
  •  無奈伤痛
    2021-02-05 13:43

    My solution to this:

    import { Renderer } from '@angular/core';
    import { ModalController, NavParams, ViewController } from 'ionic-angular';
    
    @Component(...)
    class HomePage {
    
      constructor(
        public modalCtrl: ModalController
      ) { }
    
      presentProfileModal() {
        let profileModal = this.modalCtrl.create(Profile, { userId: 8675309 });
        profileModal.present();
      }
    
    }
    
    @Component(...)
    class Profile {
    
      constructor(
        params: NavParams,
        public renderer: Renderer,
        public viewCtrl: ViewController
      ) {
        this.renderer.setElementClass(viewCtrl.pageRef().nativeElement, 'my-popup', true);
        console.log('UserId', params.get('userId'));
      }
    
    }
    

    Add this to your scss:

    ion-modal.my-popup {
      @media (min-width: 300px) and (min-height: 500px) {
        ion-backdrop {
          visibility: visible;
        }
      }
    
      .modal-wrapper {
        position: absolute;
        overflow: hidden;
        max-width: 280px;
        border-radius: 2px;
        width: 80vw;
        height: 50vh;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        margin: auto;
        border: 0;
        box-shadow: 0 16px 20px rgba(0,0,0,.4);
        background-color: #fafafa;
      }
    }
    

    Or this css, which will propose dynamic height:

    ion-modal.my-popup {
      @media (min-height: 500px) {
        ion-backdrop {
          visibility: visible;
        }
      }
    
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: $z-index-overlay;
    
      display: flex;
    
      align-items: center;
      justify-content: center;
    
      contain: strict;
      .modal-wrapper {
        &,
        .ion-page,
        .ion-page .content,
        .ion-page .content .scroll-content {
          contain: content;
          position: relative;
          top: auto;
          left: auto;
        }
    
        z-index: $z-index-overlay-wrapper;
        display: flex;
        overflow: hidden;
    
        flex-direction: column;
    
        min-width: $alert-min-width;
        max-height: $alert-max-height;
    
        opacity: 0;
    
        height: auto;
        max-width: $alert-md-max-width;
        border-radius: $alert-md-border-radius;
        background-color: $alert-md-background-color;
        box-shadow: $alert-md-box-shadow;
    
        .ion-page .content {
          background-color: color($colors, light);
        }
      }
    }
    

    I just set a class to modal element when it is called and change the style.

    • The modal implementation source is based in the official API ModalController

提交回复
热议问题