Mat-icon 不在其 div 中心

新手上路,请多包涵

我是 css 的新手,我无法将 mat-icon(思想泡泡)与 div class=img(左侧的绿色方块)对齐 - 请参阅附图。此时图标有点靠近顶部

为了添加 svg 图标,我使用了 Material Angular - MatIconRegistry 类(不知道它是否重要)

我的结果: 在此处输入图像描述

这是我的 html:

 <div class="container">
  <div class="img"><mat-icon svgIcon="info"></mat-icon></div>
  Some text here!
</div>

这是我的CSS:

 $conainer-min-width: 256px !default;
$conainer-max-width: 512px !default;
$conainer-height: 50px !default;

div.container {
  max-width: $container-max-width;
  min-width: $container-min-width;
  height: $container-height;
  margin: auto;
  color: #000000;
  background-color: #ffffff;
  line-height: $container-height;
  text-align: center;
  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
  border-width: 1px;
  border-style: solid;
  border-color: #9e9e9e;
  padding-right: 20px;
  position: fixed;
  z-index: 1000;
  left: 0;
  right: 0;
  top: 30px;
}

div.img {
  width: $container-height;
  height: $container-height;
  float: left;
  display: block;
  margin: 0 auto;
  border-right-width: 1px;
  border-right-style: solid;
  border-right-color: #9e9e9e;
  line-height: $container-height;
  justify-content: center;
  background-color: #3f9c35;
}

关于如何解决这个问题的任何想法?

原文由 Mike Me 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 500
2 个回答

您可以将 vertical align 添加到 mat-icon 元素或 .mat-icon 类:

使用全局 CSS 覆盖所有材质图标: Stackblitz

 .mat-icon {
    vertical-align: middle;
}

注意:如果您的文本有大写字母,请添加负边距以防止某些浏览器出现视觉问题( Stackblitz 演示)。

您也可以简单地使用 vertical-align: subvertical-align: bottom 如果更符合您的要求。检查以下 对齐 MDN 演示


将 FLEX 与每个图标/文本的容器元素结合使用: Stackblitz

CSS:

 .icon-text {
    display: flex;
    align-items: center;
}

HTML:

 <div class="icon-text">
   <mat-icon>home</mat-icon>
   <span>Some text here 1</span>
</div>


使用实用程序类设置特定材料图标的样式: Stackblitz

在一些全局 css 文件中:

 .v-align-middle {
    vertical-align: middle;
}

HTML:

 <div>
   <mat-icon class="v-align-middle">home</mat-icon>
   <span class="v-align-middle">Some text here 1</span>
</div>

** 一些 css 框架已经有这样的类,例如:bootstrap 4 **


为特定的材料图标设置样式: Stackblitz

CSS:

 .custom-class mat-icon {
    vertical-align: middle;
}

/** or using the class .mat-icon */
.custom-class .mat-icon {
    vertical-align: middle;
}

HTML:

 <div class="custom-class">
   <mat-icon>home</mat-icon>
   <span>Some text here 1</span>
</div>

原文由 The.Bear 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 flex Layout 来对齐图标

<div fxLayout="row" fxLayoutAlign="center">
  <mat-icon fxFlexAlign="center">supervisor_account</mat-icon>
</div>

在文档中阅读有关 flexLayout 的更多信息,fxLayout 行与以下内容相同:

 div {
  display:flex;
  flex-direction:row;
  justify-content:center; /* For fxLayoutAlign="center" */
}

然后你进一步对齐 flex 项目到中心即 fxFlexAlign="center"

 mat-icon {
  display:flex;
  align-self:center;
}

原文由 Novak254 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏