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

Material Design Icons CSS旋转不居中问题求助

解决Material Design Icons旋转Spinner偏离中心的问题

我之前也碰到过MDI图标旋转时跑偏的情况,大概率是图标元素的布局特性或者变换原点的计算逻辑导致的,试试下面这几个调整方案:

1. 给图标容器添加固定尺寸与居中样式

MDI的<i>标签默认是行内元素,即使设置了display: block,如果没有明确的宽高和对齐规则,图标可能会在容器里偏移。给.spin类加上这些样式:

.spin {
  /* 根据你的布局需求选inline-block或block */
  display: inline-block;
  /* 设置和图标匹配的尺寸,比如MDI默认24px */
  width: 24px;
  height: 24px;
  /* 让图标在容器内水平居中 */
  text-align: center;
  /* 垂直居中图标 */
  line-height: 24px;
  vertical-align: middle;
  /* 清除默认内外边距避免额外偏移 */
  margin: 0;
  padding: 0;
}

2. 修正变换原点的计算规则

你已经设置了transform-origin: center center,但浏览器默认可能是基于容器而非图标自身的边界计算变换原点。加上transform-box: fill-box可以让变换基于图标自身的填充盒子,这是关键修复:

@keyframes spin-animation {
  to {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

.spin:before {
  display: block;
  transform-origin: center center;
  /* 让变换原点基于图标自身的盒子 */
  transform-box: fill-box;
  -webkit-backface-visibility: hidden;
  -webkit-animation: spin-animation 2s linear infinite;
  animation: spin-animation 2s linear infinite;
}

3. 极端情况:用位移辅助居中

如果少数MDI图标本身的viewBox设计导致视觉偏移,还可以在变换里叠加位移修正,调整动画和伪元素样式:

@keyframes spin-animation {
  to {
    -webkit-transform: translate(-50%, -50%) rotate(360deg);
    transform: translate(-50%, -50%) rotate(360deg);
  }
}

.spin:before {
  display: block;
  transform-origin: center center;
  transform-box: fill-box;
  /* 初始位移让图标居中 */
  transform: translate(-50%, -50%) rotate(0deg);
  -webkit-backface-visibility: hidden;
  -webkit-animation: spin-animation 2s linear infinite;
  animation: spin-animation 2s linear infinite;
}

先试试前两个方案,大部分情况下都能解决偏移问题~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:30:33