如何更改材质中的md-icon大小

Mac*_*ito 42 angular-material angular

这个问题来自material2 github repo https://github.com/angular/material2/issues/4422#issuecomment-300309224

我仍然有问题来设置包装在自定义组件中的材质组件.

我有一个<logo>包含的组件<md-icon svgIcon="logo"></md-icon>

加入

:host { 
   .mat-icon {
    width: 100px;
    height: 100px;
    font-size: 56px;
  }
}
Run Code Online (Sandbox Code Playgroud)

不适用于我的自定义组件中的材质组件

Mar*_*.v7 38

就我而言,这完美无缺.我用的是最新的材料(6.2.0)

CSS:

.icon {
    font-size: 36px;
}
Run Code Online (Sandbox Code Playgroud)

HTML:

  <div class="icon">
    <mat-icon [inline]="true">done</mat-icon>
  </div>
Run Code Online (Sandbox Code Playgroud)

主要是设置: [inline]="true"

来自API:

@Input()inline:boolean - 是否应该内联图标,自动调整图标大小以匹配包含图标的元素的字体大小.

  • 这是现在更好的解决方案.不需要所有其他混音. (6认同)
  • 适用于字体图标,不适用于 SVG (3认同)
  • 谢谢。更简单的是,“&lt;mat-icon inline&gt;more_vert&lt;/mat-icon&gt;”就达到了目的 (2认同)

Mac*_*ito 32

我一直在问这个问题所以我只想更清楚地说明如何使用它...

<mat-icon svgIcon="thumbs-up" inline="true"></mat-icon>
Run Code Online (Sandbox Code Playgroud)

示例用法

/* 1. Add this mixin to a "global" scss */

@mixin md-icon-size($size: 24px) {
  font-size: $size;
  height: $size;
  width: $size;
  line-height: $size;
}

/* 2. Then use it like this in you component scss */

mat-icon {
  @include md-icon-size(32px);
}
Run Code Online (Sandbox Code Playgroud)
<mat-icon class="myIcon" svgIcon="search"></mat-icon>
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案使用SCSS,什么是vanilla CSS解决方案?此外,这只会更改包装器`<md-icon>`元素的边界框大小,而不是包含在其中的`<svg>`元素. (4认同)

Pie*_*che 15

我正在使用

<mat-icon svgIcon="cellphone-link"></mat-icon>
Run Code Online (Sandbox Code Playgroud)

.mat-icon {
    transform: scale(2);
}
Run Code Online (Sandbox Code Playgroud)

用于调整svg元素的大小.对我来说这是唯一可行的解​​决方案,其中2是实际尺寸的200%(缩小到例如0.5也是可能的).

设置"height"和"width"对我来说不是一个选项,因为mat-icon组件的渲染svg元素目前没有viewBox属性.但是必须使用viewBox属性才能使其与"高度"和"宽度"样式一起使用.也许Angular Material团队将来会改进这一点.

作为旁注:您可以使用父包装器将mat-icon居中

display: flex;
align-items: center;
justify-content: center;
Run Code Online (Sandbox Code Playgroud)


Mac*_*ito 8

编辑:请看到接受的答案!

像这样使用就可以了.

<md-icon svgIcon="arrow-down" class="size-16"></md-icon>
Run Code Online (Sandbox Code Playgroud)

当在主题css中定义它时(不在组件:主机中)

md-icon.size-16 {
  width: 16px;
  height: 16px;
  line-height: 16px;
}
Run Code Online (Sandbox Code Playgroud)


Pat*_*aut 6

要确保图标在<mat-icon>调整大小后在其内置容器(组件内)中保持居中,请使用此解决方案。并不需要一个包装盒,也没有inline=true财产。

HTML

<mat-icon class="big">error_outline</mat-icon>
Run Code Online (Sandbox Code Playgroud)

CSS

.big {
  width: 2rem;
  height: 2rem;
  font-size: 2rem;
}
Run Code Online (Sandbox Code Playgroud)

注意:您也可以使用其他单位,例如pxem


elt*_*ima 5

试试这个.

@mixin md-icon-size($size: 24px) {
  font-size: $size;
  height: $size;
  width: $size;
}

.material-icons.mat-icon {
  @include md-icon-size(32px);
}
Run Code Online (Sandbox Code Playgroud)