【问题标题】:CSS transform and rotate with animationCSS变换和旋转动画
【发布时间】:2014-05-30 13:44:48
【问题描述】:

HTML

<div id="div1">
  <div id="div2">HELLO</div>
</div>


<div id="div3">
  <div id="div4">HELLO</div>
</div>

CSS

#div1
{
position: relative;
height: 150px;
width: 150px;
margin: 50px;
padding:10px;
border: 1px solid black;
-webkit-perspective:150px; /* Chrome, Safari, Opera  */
perspective:150px;
}

#div2
{
padding:50px;
position: absolute;
border: 1px solid black;
background-color: red;

-webkit-transform-origin:0%; /* Chrome, Safari, Opera */
-webkit-transform: rotateY(117deg); /* Chrome, Safari, Opera  */
transform: rotateX(-75deg);
}




#div3
{
position: relative;
height: 150px;
width: 150px;
margin: 50px;
padding:10px;
border: 1px solid black;
-webkit-perspective:150px; /* Chrome, Safari, Opera  */
perspective:150px;
}

#div4
{
padding:50px;
position: absolute;
border: 1px solid black;
background-color: red;

-webkit-transform-origin:0%; /* Chrome, Safari, Opera */
-webkit-transform: rotateY(0deg); /* Chrome, Safari, Opera  */
transform: rotateX(-75deg);
}

尝试这样做将内部 div 从起始位置旋转到最终位置,延迟 2

Two positions

上面的代码是从Here得到的,但它不起作用。要做什么改变才能使它起作用

-webkit-backface-visibility: visible;
-webkit-transform-origin: 0% 50%;

-webkit-transform: perspective(800px) rotateY(90deg) rotateY(-90deg);

【问题讨论】:

  • 投反对票前请说明
  • 您希望动画何时开始?悬停?还是别的什么?
  • 在页面加载时,我希望它开始并实际上完成这个,因为我已经创建了一个滚动到基于 div 的菜单用于投资组合页面我希望每个 div 像具有翻转效果的页面一样加载基本的垫脚石为此
  • 看起来您必须稍微更改一下 HTML 代码,可以吗?或者使用脚本当然更容易。
  • 我试图为此坚持使用 css,在最坏的情况下,没有使用纯 css 的解决方案,我愿意用 jquery /javscript 来做,有很多插件可以做我想实现一些东西这是基本的东西

标签: html css css-animations rotatetransform


【解决方案1】:

这里:FIDDLEhttp://jsfiddle.net/9dqAK/12/

HTML

<div id="stage">
  <div id="spinner">
      hello
  </div>
</div>

CSS

@-webkit-keyframes spinner {
     from {
       -webkit-transform: rotateY(0deg);
       -moz-transform: rotateY(0deg);
     }
     to {
        -webkit-transform: rotateY(-360deg);
       -moz-transform: rotateY(-360deg);
    }
}

 #spinner {
     -webkit-transform-origin: 150px 0 0;
     -webkit-animation-name: spinner;
     -webkit-animation-timing-function: linear;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-duration: 6s;
    -webkit-transform-style: preserve-3d;
    -moz-transform-origin: 150px 0 0;
    -moz-animation-name: spinner;
    -moz-animation-timing-function: linear;
    -moz-animation-iteration-count: infinite;
    -moz-animation-duration: 6s;
    -moz-transform-style: preserve-3d;
    padding:50px;
    position: absolute;
    border: 1px solid black;
    background-color: red;
 }
 #spinner:hover {
    -webkit-animation-play-state: paused;
  }

【讨论】:

  • 赞成您的回答,但这并不是我想要做的,但有助于从另一个角度研究
【解决方案2】:

您忘记添加 when 来制作动画。我假设它是在假设hover

所以,将结束样式添加到 :hover 伪类。并且,还要指定一些过渡,以便您可以看到它的动画。

演示:http://jsfiddle.net/abhitalks/WEX75/4/

CSS

#div1 {
    position: relative;
    height: 150px;
    width: 150px;
    margin: 50px;
    padding:10px;
    border: 1px solid black;
    -webkit-perspective:150px;
}
#div2 {
    padding:50px;
    position: absolute;
    border: 1px solid black;
    background-color: red;
    -webkit-transform-origin:0%;
    -webkit-transform: rotateY(117deg);
    transition: 1s all;
}
#div1:hover > #div2 {
    -webkit-backface-visibility: visible;
    -webkit-transform-origin: 50% 50%;
    -webkit-transform: perspective(500px) rotateY(0deg);
}

编辑:(在上面某处阅读了 Op 的 cmets 之后)

您希望动画在页面加载时发生。因此,在这种情况下,只需使用 jQuery 应用相关的 CSS。将该代码包装在 domready 中。

演示 2:http://jsfiddle.net/abhitalks/WEX75/3/

JS

$("#div2").css({
    '-webkit-backface-visibility': 'visible',
    '-webkit-transform-origin': '50% 50%',
    '-webkit-transform': 'perspective(500px) rotateY(0deg)'    
});

编辑 2:

你可以使用transition-delay: 2s;引入2s的延迟。

演示 3:http://jsfiddle.net/abhitalks/WEX75/5/

【讨论】:

  • 很好,非常感谢您指出我没有设置悬停我尝试的是这个jsfiddle.net/WEX75/6 这个问题是我正确地悬停只有这个,否则它不会为你的 anwser 投票跨度>
  • @user3127499:是的,不适合所有人!这就是我们将鼠标悬停在父级上的原因。
  • 真的是这个问题被问到的原因
  • @user3127499:是的。有人投了反对票。一定是愤怒或报复之类的。 :) 它发生了。感谢您检查。干杯。
  • 是的,我想这是今天第三次或第四次了
【解决方案3】:

将 -webkit- 添加到您的最后一个转换 CSS 声明中

【讨论】:

  • 这是我第一次尝试做一些 css3 动画,坦率地说我不明白你的意思
  • 在您提供的 CSS 的最后一行,您有 transform: rotateX(-75deg); 将其更改为 -webkit-transform: rotateX(-75deg);
  • 哦,不,我忘了删除我不想要那个转换,所以为了测试目的,我只是想实现直到倒数第二个,就像翻页一样
  • 那么你的代码就可以了。对 rotateX 进行调整以显示“已完成”的转换。 -webkit-transform: rotateY(-180deg);
  • 回答问题并且该答案不等于正确答案会吸引很多反对票,请参阅此处我得到了反对票,没有任何解释为什么会获得不必要的反对票和来之不易的声誉积分,所以如果您需要指出小错误,然后尝试使用 cmets 指出它
猜你喜欢
  • 2019-02-06
  • 2011-07-24
  • 2015-09-15
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多