Angular MaterialでMatアイコンのサイズを自在に操る:3つの基本テクニックと応用例
Angular MaterialでMatアイコンのサイズを変更するには、主に以下の3つの方法があります。
CSSを使用して、Matアイコンの font-size
、 width
、 height
プロパティを直接設定することができます。
.mat-icon {
font-size: 40px; /* アイコンのサイズを40ピクセルに設定 */
}
この方法は、すべてのMatアイコンに同じサイズを適用したい場合に有効です。
ngStyle ディレクティブを使用する
個々のMatアイコンのサイズを個別に制御したい場合は、 ngStyle
ディレクティブを使用して動的にスタイルを適用することができます。
<mat-icon [ngStyle]="{'font-size': '24px'}">home</mat-icon>
上記の例では、 home
アイコンのサイズを24ピクセルに設定します。
matIconSize プロパティを使用する
Angular Material 10以降では、 matIconSize
プロパティを使用してMatアイコンのサイズをグローバルに設定することができます。
import { MatIconModule } from '@angular/material/icon';
@NgModule({
imports: [
MatIconModule,
],
declarations: [
AppComponent
],
providers: [
{ provide: MAT_ICON_SIZE, useValue: 32 } // デフォルトのアイコンサイズを32ピクセルに設定
],
bootstrap: [AppComponent]
})
export class AppModule {}
補足
- Matアイコンのサイズは、SVGアイコンのサイズとは独立しています。
- Matアイコンの色を変更するには、
color
プロパティを使用します。
上記以外にも、様々な方法でMatアイコンのサイズを変更することができます。 具体的な方法は、ご自身のプロジェクトの要件に合わせて選択してください。
以下に、上記の3つの方法でMatアイコンのサイズを変更するサンプルコードを示します。
CSSを使用する
<mat-icon>home</mat-icon>
.mat-icon {
font-size: 40px; /* アイコンのサイズを40ピクセルに設定 */
}
ngStyle ディレクティブを使用する
<mat-icon [ngStyle]="{'font-size': '24px'}">home</mat-icon>
matIconSize プロパティを使用する
import { MatIconModule } from '@angular/material/icon';
@NgModule({
imports: [
MatIconModule,
],
declarations: [
AppComponent
],
providers: [
{ provide: MAT_ICON_SIZE, useValue: 32 } // デフォルトのアイコンサイズを32ピクセルに設定
],
bootstrap: [AppComponent]
})
export class AppModule {}
<mat-icon>home</mat-icon>
<mat-icon>search</mat-icon>
以下に、参考となる情報源をいくつか紹介します。
Angular MaterialでMatアイコンのサイズを変更するその他の方法
前述の3つの方法に加えて、Matアイコンのサイズを変更する方法はいくつかあります。 以下に、いくつかの例を紹介します。
Font Awesomeは、Matアイコンよりも多くのアイコンを提供している人気のアイコンフォントです。 Font Awesomeを使用すると、CSSを使用してアイコンのサイズを簡単に変更することができます。
<i class="fas fa-home" style="font-size: 40px;"></i>
このコードは、Font Awesomeの home
アイコンを40ピクセルのサイズで表示します。
SVGアイコンを使用する
SVGアイコンは、ベクター画像であり、サイズを変更しても画質が劣化しません。 SVGアイコンを使用するには、以下の手順を実行します。
- SVGアイコンファイルをプロジェクトに追加します。
- 以下のHTMLコードを使用して、SVGアイコンを埋め込みます。
<img src="path/to/icon.svg" alt="Icon" style="width: 40px; height: 40px;">
このコードは、 icon.svg
ファイルにあるアイコンを40ピクセル x 40ピクセルのサイズで表示します。
カスタムコンポーネントを作成する
より複雑な要件がある場合は、Matアイコンのサイズを変更するカスタムコンポーネントを作成することができます。
以下の例は、Matアイコンのサイズを2倍にするカスタムコンポーネントを示しています。
import { Component, Input } from '@angular/core';
import { MatIcon } from '@angular/material/icon';
@Component({
selector: 'app-large-icon',
templateUrl: './large-icon.component.html',
styleUrls: ['./large-icon.component.css']
})
export class LargeIconComponent {
@Input() iconName: string;
constructor(private matIcon: MatIcon) { }
}
<mat-icon svgIcon="{{ iconName }}:svg" style="font-size: 2em;"></mat-icon>
.mat-icon {
font-size: inherit; /* 親コンポーネントのフォントサイズを継承 */
}
このコンポーネントを使用するには、以下のHTMLコードを使用します。
<app-large-icon iconName="home"></app-large-icon>
mat-icon-svg ディレクティブを使用する
<mat-icon-svg src="path/to/icon.svg" style="width: 40px; height: 40px;"></mat-icon-svg>
javascript html css