Mat-icon不以其div为中心

时间:2018-04-04 17:59:37

标签: html css angular-material

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

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

我的结果: enter image description here

这是我的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;
}

有关如何解决这个问题的想法吗?

4 个答案:

答案 0 :(得分:10)

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

覆盖所有素材图标: Stackblitz

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

使用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>

答案 1 :(得分:1)

您可以使用flex布局来对齐图标

<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" */
}

然后,将弹性项进一步居中对齐,即fxFlexAlign="center"

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

答案 2 :(得分:1)

对我有用的是将 flex-container (对齐内容/对齐项居中)与这些属性font-sizewidth和{{1 }}-根据您的字体大小,它会驱动其他两个属性:

height

答案 3 :(得分:0)

我相信你的问题是这些变量名称的错字:

  

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

与此处使用的变量不匹配:

  

div.container {
    max-width:$ container-max-width;
    min-width:$ container-min-width;
    身高:$ container-height; }

我认为将conainer更改为container后,它应该有效:)