You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pdfmake表格中实现图标的垂直居中对齐?

解决表格图标垂直居中问题

问题现状

你当前的代码已经实现了图标的水平居中,但未实现垂直对齐,效果如下:
图标对齐效果

解决方案

方案1:利用表格单元格的垂直对齐属性

表格单元格默认vertical-align值为baseline,改为middle即可让内容垂直居中。

  • 方式1:行内样式直接添加
    修改每个包含图标的td标签,追加vertical-align: middle:
<td class="rating-td" *ngIf="res.rating.rating == 5" style="width: 10%;text-align: center;vertical-align: middle;">
  <img src="data:image/png;base64,iVBORw0KGgoAAAAN">
</td>
  • 方式2:CSS类统一设置(推荐)
    在全局或组件样式中添加:
.rating-td {
  vertical-align: middle;
}

所有带rating-td类的单元格都会自动应用垂直居中,无需逐个修改行内样式。

方案2:Flex布局实现双方向居中

如果偏好Flex布局,给rating-td设置以下样式:

.rating-td {
  width: 10%;
  display: flex;
  align-items: center; /* 垂直居中 */
  justify-content: center; /* 水平居中 */
}

这种方式无需额外写text-align: center,Flex会同时处理水平、垂直方向的居中。

代码优化建议

你当前代码中每个评分都单独写td和*ngIf,冗余度高。可以用Angular的ngSwitch简化结构:

<div id="pdfTable" #pdfTable style="display: none;">
  <table class="table table-borderless mb-0" style="font-size:14px;">
    <thead>
      <tr *ngFor='let res of resRating'>
        <td><b>{{res.skill.skillName}}:</b>{{res.skill.skillDescription}}</td>
        <td class="rating-td" [ngSwitch]="res.rating.rating" style="width: 10%;vertical-align: middle;text-align:center;">
          <img *ngSwitchCase="5" src="data:image/png;base64,iVBORw0KGgoAAAAN">
          <img *ngSwitchCase="4" src="data:image/png;base64,iVBORw0KGgoAAAAN">
          <img *ngSwitchCase="3" src="data:image/png;base64,iVBORw0KGgoAAAAN">
          <img *ngSwitchCase="2" src="data:image/png;base64,iVBORw0KGgoAAAAN">
          <img *ngSwitchCase="1" src="data:image/png;base64,iVBORw0KGgoAAAAN">
        </td>
      </tr>
    </thead>
  </table>
</div>

只用一个td就能根据评分显示对应图标,后期维护更便捷。

内容的提问来源于stack exchange,提问作者rose pauline

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:55:38