Vanilla CSS、HTML、またはJSを使用して、Angular 2+ Material DesignのSVGアイコンのサイズを変更するにはどうすればよいですか?
HTML要素内でアイコンを指定すると、スタイル設定は正常に機能します。
<mat-icon style="font-size: 16px !important">home</mat-icon>
ただし、svgIcon
属性を使用すると(たとえば、サードパーティのアイコンライブラリを使用する場合)、アイコンのサイズを変更できません。
<mat-icon style="font-size: 16px !important" svgIcon="home"></mat-icon>
SVGのスケーリングはより複雑であり、viewBox
属性を使用できることを認識しています。ただし、<svg>
内の<mat-icon>
子要素にアクセスして、いJSハックを実行することもできません。 Vanilla CSSでそれを行う簡単な方法はありますか?またはAngularコンポーネントのいハッキングでも?
追加情報:https://materialdesignicons.com のmdi.svg
アイコンライブラリを使用して、追加のアイコンを取得していますAngularプロジェクト。ただし、これらを使用するには、svgIcon
属性を使用する必要があります。
ライブラリスタイルがcssインライン宣言をオーバーライドしているようです。 _!important
_宣言をスタイルに追加してみてください:_style="font-size: 16 !important"
_またはコードを追加しなかったため、このアイコンノードを調べて、フォントサイズを定義するスタイルを確認してください。
こちら も確認してください
[〜#〜] update [〜#〜]:
これは別の可能性のある解決策です。サイズを変更するsvg要素にtransform: scale(2);
スタイルを追加します。2は実際のサイズの200%です(もちろん、たとえば50%の0.5値を使用してサイズを小さくすることもできます)。以下は、アイコンと documnetationへのリンク を使用したWebサイトの動作サンプルです。
_.size-24 button svg {
width: 24px;
height: 24px;
transform: scale(2);
}
_
あまりにも長い間これで遊んだ。
さまざまなmat-icon
サイズですが、各アイコンは異なるスケールを必要とするため、他のアイコンとバランスが取れているように見えます-事実上、viewBoxのサイズを大きくします。
結局、これは十分に機能しました:
mat-icon
{
width: 50px;
height: 50px;
display: flex;
flex-shrink: 0;
justify-content: center;
outline: 1px dashed red; // for testing
& ::ng-deep svg
{
align-self: center;
}
&.shrink-90 ::ng-deep svg
{
width: 90%;
height: 90%;
}
&.shrink-80 ::ng-deep svg
{
width: 80%;
height: 80%;
}
}
次に、mat-icon
これで、iconCss='shrink-80'
<mat-icon svgIcon="{{ feature.name }}" [ngClass]="feature.iconCss"></mat-icon>
mat-icon
自体は、任意の追加クラスでスケーリングできます(通常のアイコンの場合と同様)。次に、「縮小」によりボックス内のサイズが調整されます。
@mproソリューションを採用して、私にとってより効果的な変更をいくつか行いました(カスタムアイコンがあるので、それが理由かもしれません)。
mat-icon[size="2"]{
width: 48px;
height: 48px;
}
mat-icon[size="2"] svg{
transform: scale(2);
transform-Origin: left top;
}
またはscssソリューション:
@mixin iconSize($size){
&[size="#{$size}"]{
width: 24px*$size;
height: 24px*$size;
svg{
transform: scale($size);
transform-Origin: left top;
}
}
}
これは、mat-icon
の@angular/material2
サイズを変更する方法です 6.0.
このメソッドでは、mat-icon-button
を使用している場合、サイズを変更するのはSVGアイコンのみです。新しいサイズが大きすぎる場合は、mat-icon button
のサイズを調整するだけです。単純なmat-icon
であれば、これについて考える必要はありません。
.mat-icon {
font-size: /* your size here */;
}
Angular Material 2では、要素でプロパティ[inline] = "true"を使用できます。ドキュメントによると、「アイコンをインラインにするかどうか、フォントサイズに合わせてアイコンのサイズを自動的に変更します。アイコンが含まれる要素の」。したがって、マットアイコンがdiv要素内にある場合、div要素でfont-sizeスタイルを設定でき、これはmat-iconによって継承されます。
<div class="parent" style="font-size:2em"> <mat-icon>play_arrow</mat-icon> </div>
私のアプリケーションでは、Material 7を使用して、CSSの「mat-icon」要素の幅と高さを(もちろん!importantを使用して)変更しました。
例えば:
mat-icon {
width: 32px !important;
height: 32px !important;
}