什么是在Ionic FAB列表中插入标签的正确方法

muz*_*ack 24 ionic-framework ionic-view ionic2

我想插入一个标签,以便匹配Fab列表中每个FAB图标的正确方法.我这样做的方式不起作用

<ion-fab left middle>
  <button ion-fab color="dark">
    <ion-icon name="arrow-dropup"></ion-icon>
    <ion-label>here</ion-label>
  </button>
  <ion-fab-list side="top">
    <button ion-fab>
      <ion-icon name="logo-facebook"></ion-icon>
      <ion-label>here</ion-label>
    </button>
    <button ion-fab>
      <ion-icon name="logo-twitter"></ion-icon>
    </button>
    <button ion-fab>
      <ion-icon name="logo-vimeo"></ion-icon>
    </button>
    <button ion-fab>
      <ion-icon name="logo-googleplus"></ion-icon>
    </button>
  </ion-fab-list>
</ion-fab>
Run Code Online (Sandbox Code Playgroud)

ros*_*oss 50

对于它的价值,我能够通过以下SCSS完成您的要求.

如果Ionic直接支持它会很好,但我找不到任何表明它是内置的东西.

    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;
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 你需要添加它才能工作:```contains:layout;``` (9认同)
  • 只需添加指针事件css并使标签可单击.button [ion-fab] {ion-label {pointer-events:auto; }} (5认同)

小智 29

罗斯的解决方案是伟大的,但为了使其对离子v2的工作,我不得不改变.fab,从带有离子类contain: strictcontain: layout.

这就是班级的最初方式:

.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;
}
Run Code Online (Sandbox Code Playgroud)

因此,在页面.scss文件中添加以下内容:

.fab {
    contain: layout;
}
Run Code Online (Sandbox Code Playgroud)

它将覆盖.fab页面的默认类,它将起作用.


Anj*_*wal 13

如果您使用 ionic 4,这是给您的

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);
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)


Roh*_*iya 7

在此输入图像描述

是的,你可以这样实现。

  1. component.html文件中。

<ion-fab vertical="bottom" horizontal="end">
      <ion-fab-button color="success">
        <ion-icon name="alert-circle-outline"></ion-icon>
      </ion-fab-button>
      <ion-fab-list side="top">
        <ion-fab-button (click)="callFunction()" data-desc="Sales" color="success">
          <ion-icon name="cart-outline"></ion-icon>
        </ion-fab-button>
        <ion-fab-button (click)="callFunction()" data-desc="Payment" color="success">
          <ion-icon name="cash-outline"></ion-icon>
        </ion-fab-button>
        <ion-fab-button (click)="callFunction()" data-desc="Edit" color="danger">
          <ion-icon name="create-outline"></ion-icon>
        </ion-fab-button>
      </ion-fab-list>
    </ion-fab>
Run Code Online (Sandbox Code Playgroud)

  1. component.css文件..
ion-fab-button[data-desc] {
    position: relative;
}

ion-fab-button[data-desc]::after {
    position: absolute;
    content: attr(data-desc);
    z-index: 1;
    right: 50px;
    bottom: 7px;
    color: var(--ion-color-contrast, #fff);
    background-color: var(--ion-color-base, #fff);
    padding: 5px 10px;
    border-radius: 10px;
    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);
}
Run Code Online (Sandbox Code Playgroud)


Sab*_*ang 6

I Ionic 4/5 接受的答案(图标旁边的标签)不再起作用。您必须使用::afteritem或这样的全局属性来使用伪 css 样式data-。请参阅下面的示例:

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>
Run Code Online (Sandbox Code Playgroud)

社会保障:

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);
}
Run Code Online (Sandbox Code Playgroud)

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

  • 就像 Ionic 5 中的 charm 一样工作。 (3认同)

小智 5

使用 Shadow DOM 和 ::part 选择器更新 Ionic 6+ 版本:

ion-fab-list ion-fab-button {
    overflow: visible;
    position: relative;
    contain: layout;
}
ion-fab-list ion-fab-button ion-label {
    position: absolute;
    right: 50px;
    color: var(--color);
    background: var(--background);
    line-height: 1rem;
    padding: 4px 8px;
    border-radius: 8px;
    box-shadow: var(--box-shadow);
    height: 40px;
    width: max-content;
    display: flex;
    align-items: center;
}
ion-fab-list ion-fab-button::part(native) {
    contain: initial;
    overflow: visible;
}
Run Code Online (Sandbox Code Playgroud)