[英]Angular-Material2: Align text and md-icon vertically to match vertical style?
這是使用<md-icon>
時的常見問題。 要對齊圖標和文本,您可以將文本放在跨度內並對其應用樣式:
<div>
<md-icon>home</md-icon><span class="aligned-with-icon">Sample Text</span>
</div>
在你的 component.css 中:
.aligned-with-icon{
position: absolute;
margin-top: 5px;
margin-left: 5px; /* optional */
}
如果您將多個圖標放在同一個 div 中,您也可以使用relative
位置。 這是為此的CSS:
.aligned-with-icon-relative{
position: relative;
top: -5px;
margin-left: 5px; /* optional */
}
另一種選擇是在外部 div 上使用flex
display 並將align-items
到center
:
在你的 html 中:
<div class="with-icon">
<md-icon>home</md-icon>Sample Text
</div>
在你的 css 中:
.with-icon {
display: flex;
align-items: center;
}
這是一個Plunker演示
我使用inline
屬性。 這將導致圖標與按鈕的大小正確縮放。
<button mat-button>
<mat-icon inline=true>local_movies</mat-icon>
Movies
</button>
<!-- Link button -->
<a mat-flat-button color="accent" routerLink="/create"><mat-icon inline=true>add</mat-icon> Create</a>
我將此添加到我的styles.css
中:
button.mat-button .mat-icon,
a.mat-button .mat-icon,
a.mat-raised-button .mat-icon,
a.mat-flat-button .mat-icon,
a.mat-stroked-button .mat-icon {
vertical-align: top;
font-size: 1.25em;
}
你可以使用
div {
display: flex;
vertical-align: middle;
}
或
span {
display: inline-flex;
vertical-align: middle;
}
我必須說這么簡單的事情應該自動開箱即用。 但是您可以使用position: absolute
垂直居中圖標,如下所示:
你可以在這里找到演示
button {
/* manually making space for mat-icon because
mat-icon is not position: absolute
*/
padding-left: 30px;
}
::ng-deep .mat-icon{
font-size: 16px !important; /*change this as per your needs*/
position: absolute;
top: 50%;
transform: translate(-22px, -50%);
/*centering image inside mat-icon box*/
display: flex !important;
justify-content: center;
align-items: center;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.