首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >css动画变换-保持任意旋转

css动画变换-保持任意旋转
EN

Stack Overflow用户
提问于 2019-11-05 22:07:19
回答 2查看 415关注 0票数 1

例如,我有一个CSS动画,如下所示:

代码语言:javascript
复制
@keyframes my-animation {
    0%   { opacity: 0; visibility: visible; transform: scale(0,0); }
    50%  { transform: scale(1.15, 1.15); }
    100% { transform: none; }
}

我想将它应用于具有任意旋转的DIV,例如:

代码语言:javascript
复制
<div style="width:100px; height:100px; transform: rotate(45deg)"/> 

当我应用CSS animation时,关键帧有另一个仅设置scaletransform属性。因此,我的DIV在动画过程中旋转回0,并在结束时恢复为45度旋转。但我希望它保持其任意的原始旋转。所以问题是:有没有办法在关键帧的transform属性中指定它应该保持现有的(任意)旋转?

transform: scale(1.15, 1.15) rotate(keep)这样的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-05 22:20:16

使用CSS变量

代码语言:javascript
复制
.x {
  transform: rotate(var(--r,0deg));
  height: 50px;
  width: 50px;
  display:inline-block;
  background: green;
  animation: my-animation 5s;
  margin: 20px;
}

@keyframes my-animation {
  0% {
    opacity: 0;
    transform: scale(0) rotate(var(--r,0deg));
  }
  50% {
    transform: scale(1.15) rotate(var(--r,0deg));
  }
}
代码语言:javascript
复制
<div class="x" style="--r:80deg"></div>

<div class="x" ></div>

<div class="x" style="--r:60deg"></div>

或者如下所示,这样您就可以将任何变换附加到关键帧中定义的变换

代码语言:javascript
复制
:root {
  --r: rotate(0deg); /* Use any null transform (ex: translate(0), skew(0deg), etc)*/
}

.x {
  transform: var(--r);
  height: 50px;
  width: 50px;
  display:inline-block;
  background: green;
  animation: my-animation 5s;
  margin: 20px;
}

@keyframes my-animation {
  0% {
    opacity: 0;
    transform: scale(0) var(--r);
  }
  50% {
    transform: scale(1.15) var(--r);
  }
}
代码语言:javascript
复制
<div class="x" style="--r:rotate(80deg) skew(20deg)"></div>

<div class="x" ></div>

<div class="x" style="--r:rotate(60deg) translate(20px,20px)"></div>

票数 1
EN

Stack Overflow用户

发布于 2019-11-05 23:26:48

这是一个没有变量的简单解决方案-我只需要包装你的div,然后在包装器上进行缩放,让内部的div任意旋转。微不足道,但我认为这是一个很好的技巧。

代码语言:javascript
复制
.box {
  height: 50px;
  width: 50px;
  background: green;
  margin: 50px;
}

.scale-me {
  animation: my-animation;
  animation-duration: 10s;
}

@keyframes my-animation {
  0% {
    opacity: 0;
    transform: scale(0);
  }
  50% {
    transform: scale(1.15);
  }
}
代码语言:javascript
复制
<div class="scale-me">
  <div class="box" style="transform: rotate(45deg)"></div>
  <div class="box" style="transform: rotate(60deg)"></div>
  <div class="box" style="transform: rotate(120deg)"></div>
</div>

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58713091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档