【问题标题】:css rotate a transformed objectcss旋转变换的对象
【发布时间】:2014-06-11 01:51:23
【问题描述】:

html

<div class="camera">
  <div class="dreid">
    <div class="planet1"></div>
    <div class="planet2"></div>
  </div>
</div>

css

.camera {
  width: 300px;
  height: 300px;
  border: 1px solid black;
  -webkit-perspective: 800;
  -webkit-perspective-origin: 50% 700px;
}
.dreid {
  width:220px;
  height:220px;
  border-radius: 50%;
  border: 1px solid black;
  margin: 60px auto;
  -webkit-transform: rotateX(45deg);
  -webkit-animation-name: spin;
  -webkit-animation-duration: 10s;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;  

}

@-webkit-keyframes spin {
  from {
    -webkit-transform:rotate(0deg);
  }
  to {
    -webkit-transform:rotate(360deg);
  }
}
.planet1 {
  position:absolute;
  top:0;
  left:0;
  width:50px;
  height:50px;
  background:red;
  border-radius:50%;
}
.planet2 {
  position: absolute;
  top:170px;
  left:170px;
  width:50px;
  height:50px;
  background:red;
  border-radius:50%;
}

如您所见,我尝试在旋转之前将透视应用于圆(有点像在行星系统中)。问题是,动画位似乎覆盖了我用 -perspective 和 -transform:rotate 设置的变换位。有没有可能用纯css完成?

编辑:JSFiddle

【问题讨论】:

    标签: html css transform css-animations


    【解决方案1】:

    一个元素不能应用多个transforms。因为你在动画中有一个transform,它会覆盖你的旧的

    您的选择是添加一个容器元素并将动画应用于该元素,或者手动将原始变换添加到动画的变换中

    Demo第二个选项

    更多信息请见this SO question

    【讨论】:

    • 附带说明,如果您愿意,可以使用伪元素而不是内部元素
    • 我尝试将 -transform:rotateX 添加到我的“旋转”函数中,但这会导致透视覆盖旋转。我不确定我是否理解正确。
    • 啊回答太快了。是的,这正是我的意思!但是我太笨了,以至于删除了容器内的 -transform 并将其添加到我的动画中。非常感谢!
    • false 一个元素可以有不止一个 trasform 应用于它,如果它在一行中完成,请参阅此处jsfiddle.net/ELyTU/4
    • @Olumide 这根本不是我要说的。我是说一个元素不能同时应用多个 transform 的单独实例,而不是多个 transform 的属性
    猜你喜欢
    • 2017-10-29
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多