我是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;
}
有关如何解决这个问题的想法吗?
答案 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-size
,width
和{{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
后,它应该有效:)