仅使用CSS从中心旋转三角形图像?

时间:2018-09-29 13:21:15

标签: css css3 css-animations css-transforms

我正在尝试使用CSS从中心旋转三角形图像。

我可以旋转图像,但不能从中间旋转。

这是我到目前为止所拥有的:

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#loading {
  animation: rotation 2s infinite linear;
}

@keyframes rotation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}
<img id="loading" src='https://i.postimg.cc/zVSqhnr9/loader.png' border='0' alt='loader' />

这似乎对其位置有一定影响,但我无法弄清楚:

transform-origin: 30% 80%;

2 个答案:

答案 0 :(得分:1)

要获取三角形的中心:

(90,158/3)

然后,将(158/3)减去到 158 ,以从顶部而不是底部获得Y坐标。


enter image description here

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#loading {
  transform-origin: 90px 105.3px;
  animation: rotation 2s infinite linear;
}

@-webkit-keyframes rotation {
  from {
    -webkit-transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(359deg);
  }
}
<img id="loading" src='https://i.postimg.cc/zVSqhnr9/loader.png' border='0' alt='loader'/>

答案 1 :(得分:0)

这是一个等边三角形,因此中心不是图像的中心,您应该像这样调整transform-origin

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#loading {
  animation: rotation 2s infinite linear;
  transform-origin: calc(100% / 2) calc(100% * 2 / 3);
  /* transform-origin: 50%  66.666% */
}

@keyframes rotation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}
<img id="loading" src='https://i.postimg.cc/zVSqhnr9/loader.png' border='0' alt='loader' />

enter image description here

关于计算细节,我们具有以下方程式:

a² + c² = b²
c  + b  = Height
a² + Height² = (2a)²
2a = Width

解决后,我们将获得:

a = 1/2 * Width   (50%)
b = 2/3 * Height  (66.666%)
c = 1/3 * Height