文本旁边的位置图标

Position icon next to text

我创建了一个显示图标和文本的 div,但我需要将图标放在文本旁边而不是文本上方。目前看起来像这样:

而且我需要像这样将图标放在文本旁边(图标需要显示在文本的左侧而不移动文本,因此 header 仍然与 [=58= 对齐] 数):

代码:

    <div fxLayout="row" fxLayoutAlign="space-around center">
            <div>
                <mat-icon svgIcon="phone-outline"> </mat-icon>
                <h3>Customer Support</h3>
                <label>123456</label>
            </div>
         <div>
            <mat-icon svgIcon="email-outline"> </mat-icon>
            <h3>Email</h3>
            <label>test@email.com</label>
        </div>
        <div>
            <mat-icon svgIcon="map-marker-outline"> </mat-icon>
            <h3>Address</h3>
            <label>address line 1</label>
        </div>
   </div>

我有三个 div 并且使用 fxLayoutAlign 将它们在整个页面中彼此相邻对齐,但是如果我将图标放在单独的 div 中,fxLayoutAlign 会将它移到页面上太远。有没有更好的方法来对齐 divs?

到目前为止尝试过:

  1. 尝试将图标与文本放在同一行,但图标离文本太近了: <h3><mat-icon svgIcon="phone-outline"> </mat-icon> Customer Support</h3>

我需要在图标和文字之间有 space 并与文字对齐。

  1. 使用CSS尝试对齐仍然会导致图标离文本太近(并且未正确对齐): .align-items { display: flex; justify-content: space-between; } .align-content { display: flex; align-items: center; }

使用边距移动 CSS 中的图标看起来很有效,但它现在移动了带有 phone 数字的第二行:

phone 数字应直接位于 header 文本下方(如上面的第一个屏幕截图所示)

为包装图标和标题的 div 创建一个 class。不需要 fxLayout

.align-icon{
    display: flex;
    align-items: flex-end;
}

您可以使用 matPrefixmatSuffix

<mat-form-field class="example-full-width">
    <mat-icon matPrefix>mode_edit</mat-icon>
    <mat-label>EXAMPLE</mat-label>
    <mat-icon matSuffix>mode_edit</mat-icon>
</mat-form-field>
<div fxLayout="row" fxLayoutAlign="space-around center">
            <div>               
                <h3>Customer Support<mat-icon svgIcon="phone-outline"> </mat-icon></h3>
            </div>
         <div>
            <mat-icon svgIcon="email-outline"> </mat-icon>
            <h3>Email</h3>
        </div>enter code here
        <div>
            <mat-icon svgIcon="map-marker-outline"> </mat-icon>
            <h3>Address</h3>
        </div>
   </div>

这是另一种纯 css 的方法。

css

.align-items {
  display: flex;
  justify-content: space-between;
}

.align-content {
  display: flex;
}

mat-icon {
  margin-right: 10px;
}

.align-text-item {
  display: flex;
  flex-direction: column;
  align-items: center;
}

h3 {
  margin-top: 0px;
}

html

<div class="align-items ">
    <div class="align-text-item">
        <div class="align-content">
            <mat-icon svgIcon="thumbs-up" aria-hidden="false" aria-label="Example thumbs up SVG icon"></mat-icon>
            <div>
                <h3>Customer Support</h3>
                123456
            </div>
        </div>
    </div>
    <div class="align-text-item">
        <div class="align-content">
            <mat-icon svgIcon="thumbs-up" aria-hidden="false" aria-label="Example thumbs up SVG icon"></mat-icon>
            <div>
                <h3>Email</h3>
                123456
            </div>

        </div>

    </div>
    <div class="align-text-item">
        <div class="align-content">
            <mat-icon svgIcon="thumbs-up" aria-hidden="false" aria-label="Example thumbs up SVG icon"></mat-icon>
            <div>
                <h3>Address</h3>
                123456
            </div>
        </div>
    </div>
</div>