LoginSignup
16
12

More than 5 years have passed since last update.

Angular Materialでバッジ付きアイコンボタンを作る

Last updated at Posted at 2017-10-31

小ネタです。
Angular Materialを使ったアプリケーションで、通知件数などを表示するためのバッジを使いたい場面があったのですが、Angular Materialのコンポーネントが用意されていなかったので、既存のコンポーネントとCSSを組み合わせて作ってみました。

イメージ的にはこんな感じです。(画像はwantedlyのツールバー)

スクリーンショット 2017-10-31 21.50.36.png

最終的にこんな感じになりました。

スクリーンショット 2017-10-31 23.31.05.png

手順

HTML

まずは、html側です。
通常のIcon Buttonsをマークアップした後に、バッジの件数表示部分をspanとして追加します。ここでは表示を5としていますが、実際にはテンプレートで動的に変更できるようにするかと思います。

app.component.html
  <button mat-icon-button>
    <mat-icon class="icon">notifications</mat-icon>
    <span class="badge">5</span>
  </button>

CSS

次に、バッジをスタイリングするCSS側です。
こんな感じになりました。
地道にCSSを書いていくだけなのですが、バッジサイズに合わせて、 line-heightを指定するのがポイントかと思います。

バッチの

app.component.css
.badge {
  position: absolute;
  top: 0;
  left: 50%;
  font-size: 12px;
  line-height: 13px;
  border-radius: 50%;
  width: 13px;
  height: 13px;
  background-color: #ff0000; 
  border: 4px solid #ff0000;
  color: #ffffff;
  text-align: center;
}

デモ

stackblitzに動くデモを作ってみました。
https://stackblitz.com/edit/angular-material-badge

※ ボタンを押すとバッジのカウントが上がり、バッジ自体をクリックするとカウントがクリアされます。

所感

stackblitzめちゃくちゃ便利。

以上です。

16
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
12