whats the correct way of inserting label in an Ionic FAB list

后端 未结 6 717
谎友^
谎友^ 2020-12-08 10:56

i want to insert a label so that matches every FAB icon on the Fab list whats the correct way of doing it. the way i did it it doesn\'t work

相关标签:
6条回答
  • 2020-12-08 11:07
    <ion-fab horizontal="end" vertical="bottom" size='small'>
      <ion-fab-button>
        <ion-icon name="md-arrow-dropup"></ion-icon>
      </ion-fab-button>
      <ion-fab-list side="top">
        <ion-item
          style="position: absolute; margin: auto; border: 1px solid; right: 20px; border-radius: 30px; he`ight: 38px;">
          <ion-icon style=" margin-top: 0px;" slot="end" src='assets/icon/lock.svg'></ion-icon>
          <ion-label style=" margin-top: 0px;">Log out</ion-label>
        </ion-item>
      </ion-fab-list>
    </ion-fab>
    

    ion-fab with label and icon (Preview):

    0 讨论(0)
  • 2020-12-08 11:17

    If you are using ionic 4, this is for you

    ion-fab-button[data-desc] {
      position: relative;
    }
    
    ion-fab-button[data-desc]::after {
      position: absolute;
      content: attr(data-desc);
      z-index: 1;
      right: 55px;
      bottom: 4px;
      background-color: var(--ion-color-dark);
      padding: 9px;
      border-radius: 15px;
      color: white;
      box-shadow: 0 3px 5px -1px rgba(0,0,0,0.2), 0 6px 10px 0 rgba(0,0,0,0.14), 0 1px 18px 0 rgba(0,0,0,0.12);
    }
    <ion-fab horizontal="end" vertical="bottom" slot="fixed">
        <ion-fab-button color="primary" class="">
          <ion-icon name="add"></ion-icon>
        </ion-fab-button>
        <ion-fab-list side="top">
          <ion-fab-button color="primary" routerLink="/contacts/create" routerDirection="forward" data-desc="Create Contact">
            <ion-icon name="person-add"></ion-icon>
          </ion-fab-button>
          <ion-fab-button color="primary" >
            <ion-icon name="stats"></ion-icon>
          </ion-fab-button>
          <ion-fab-button color="primary" routerLink="/reminder/create" routerDirection="forward" data-desc="Create Reminder">
            <ion-icon name="alarm"></ion-icon>
          </ion-fab-button>
        </ion-fab-list>
      </ion-fab>

    0 讨论(0)
  • 2020-12-08 11:21

    I Ionic 4/5 the accepted answer (labels next to icons) doesn't work anymore. You have to use ::after pseudo css styling using a global attribute like item or data-. See the example below:

    HTML:

    <ion-fab vertical="bottom" horizontal="end">
        <ion-fab-button>
          <ion-icon name="add"></ion-icon>
        </ion-fab-button>
        <ion-fab-list side="top">
          <ion-fab-button (click)="do1()" data-desc="Description 1">
            <ion-icon name="contact"></ion-icon>
          </ion-fab-button>
          <ion-fab-button (click)="do2()" data-desc="Description 2">
            <ion-icon name="person-add"></ion-icon>
          </ion-fab-button>
        </ion-fab-list>
      </ion-fab>
    

    SCSS:

    ion-fab-button[data-desc] {
      position: relative;
    }
    
    ion-fab-button[data-desc]::after {
      position: absolute;
      content: attr(data-desc);
      z-index: 1;
      right: 55px;
      bottom: 4px;
      background-color: var(--ion-color-primary);
      padding: 9px;
      border-radius: 15px;
      color: white;
      box-shadow: 0 3px 5px -1px rgba(0,0,0,0.2), 0 6px 10px 0 rgba(0,0,0,0.14), 0 1px 18px 0 rgba(0,0,0,0.12);
    }
    

    Source: https://forum.ionicframework.com/t/fab-labels-in-ionic-4/139823/6

    0 讨论(0)
  • 2020-12-08 11:23

    For what it's worth, I was able to accomplish what you ask with the following SCSS.

    It'd be nice if this was supported directly by Ionic, but I can't find anything indicating this is built-in.

        button[ion-fab] {
            overflow: visible;
            position: relative;
    
            ion-label {
                position: absolute;
                top: -8px;
                right: 40px;
    
                color: white;
                background-color: rgba(0,0,0,0.7);
                line-height: 24px;
                padding: 4px 8px;
                border-radius: 4px;
            }
            contain: layout;
        }
    

    0 讨论(0)
  • 2020-12-08 11:25

    ross solution is great,but in order for it to work on Ionic v2 I had to change the .fab class that comes with Ionic from contain: strict to contain: layout.

    This is how the class is originally:

    .fab {
        -moz-appearance: none;
        -ms-appearance: none;
        -webkit-appearance: none;
        appearance: none;
        position: relative;
        z-index: 0;
        display: block;
        overflow: hidden;
        width: 56px;
        height: 56px;
        border-radius: 50%;
        font-size: 14px;
        line-height: 56px;
        text-align: center;
        text-overflow: ellipsis;
        text-transform: none;
        white-space: nowrap;
        cursor: pointer;
        transition: background-color, opacity 100ms linear;
        background-clip: padding-box;
        -webkit-font-kerning: none;
        font-kerning: none;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        contain: strict;
    }
    

    So, add the following on your page .scss file:

    .fab {
        contain: layout;
    }
    

    It will overwrite the default .fab class for the page and it will work.

    0 讨论(0)
  • 2020-12-08 11:30

    The chosen answer seemed to work most of the time, but in some iOS devices it was not picking up the contain: layout; setting, making the label not align. I didn't need my label as part of the clickable button, so my FAB label addition is below which works on iOS. Fairly simple.

    HTML

    <ion-fab top right edge>
        <button ion-fab color="primary">
            <ion-icon name="add"></ion-icon>
        </button>
        <ion-label>Scan</ion-label>
    </ion-fab>
    

    CSS

    ion-fab ion-label {
        font-weight: bold;
        color: color($colors, primary, base);
        text-align: center;
        margin: 0px !important;
    }
    
    0 讨论(0)
提交回复
热议问题