CSS Transition Jumpy / Jerky

时间:2015-09-02 04:00:17

标签: html css css3 css-animations

我一直在使用scale()属性,这个属性在几个星期前一直运行良好。浏览器更新后,现在我看到一个生涩/跳跃的动画,有人可以指出我的问题到底在哪里吗?

请查看以下 jsFiddle ;在翻转过程中,ICON(显示" A")将从底部滑入并同时缩放,但它会下降到起点,从而产生生涩/跳跃的动画效果。



.ca-menu {
    padding:0;
    margin:20px auto;
    width: 1020px;
}
.ca-menu li {
    width: 200px;
    height: 300px;
    overflow: hidden;
    position: relative;
    float:left;
    background: #fff;
    -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
    box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
    margin-right: 4px;
    -webkit-transition: all 300ms linear;
    -moz-transition: all 300ms linear;
    -o-transition: all 300ms linear;
    -ms-transition: all 300ms linear;
    transition: all 300ms linear;
}
.ca-menu li:last-child {
    margin-right: 0px;
}
.ca-menu li a {
    text-align: left;
    width: 100%;
    height: 100%;
    display: block;
    color: #333;
    position: relative;
}
.ca-icon {
    font-family:'WebSymbolsRegular', cursive;
    font-size: 60px;
    color: #333;
    text-shadow: 0px 0px 1px #333;
    line-height: 150px;
    position: absolute;
    width: 100%;
    height: 50%;
    left: 0px;
    top: 0px;
    text-align: center;
    -webkit-transition: all 400ms linear;
    -moz-transition: all 400ms linear;
    -o-transition: all 400ms linear;
    -ms-transition: all 400ms linear;
    transition: all 400ms linear;
}
.ca-content {
    position: absolute;
    left: 0px;
    width: 100%;
    height: 50%;
    top: 50%;
}
.ca-main {
    font-size: 30px;
    opacity: 0.8;
    text-align: center;
    -webkit-transition: all 200ms linear;
    -moz-transition: all 200ms linear;
    -o-transition: all 200ms linear;
    -ms-transition: all 200ms linear;
    transition: all 200ms linear;
}
.ca-sub {
    text-align:center;
    font-size: 14px;
    color: #666;
    line-height: 40px;
    opacity: 0.8;
    position: absolute;
    bottom: 0;
    width: 100%;
    -webkit-transition: all 200ms linear;
    -moz-transition: all 200ms linear;
    -o-transition: all 200ms linear;
    -ms-transition: all 200ms linear;
    transition: all 200ms linear;
}
.ca-menu li:hover {
    background-color: #000;
}
.ca-menu li:hover .ca-icon {
    color: #ff2020;
    -webkit-animation: moveFromBottom 300ms ease;
    -moz-animation: moveFromBottom 300ms ease;
    -ms-animation: moveFromBottom 300ms ease;
}
.ca-menu li:hover .ca-main {
    color: #ff2020;
    -webkit-animation: smallToBig 300ms ease;
    -moz-animation: smallToBig 300ms ease;
    -ms-animation: smallToBig 300ms ease;
}
.ca-menu li:hover .ca-sub {
    color: #000;
    background-color: #ff2020;
    -webkit-animation: moveFromBottom 500ms ease;
    -moz-animation: moveFromBottom 500ms ease;
    -ms-animation: moveFromBottom 500ms ease;
}
@-webkit-keyframes smallToBig {
    from {
        -webkit-transform: scale(0.1);
    }
    to {
        -webkit-transform: scale(1);
    }
}
@-moz-keyframes smallToBig {
    from {
        -moz-transform: scale(0.1);
    }
    to {
        -moz-transform: scale(1);
    }
}
@-ms-keyframes smallToBig {
    from {
        -ms-transform: scale(0.1);
    }
    to {
        -ms-transform: scale(1);
    }
}
@-webkit-keyframes moveFromBottom {
    from {
        -webkit-transform: translateY(100%);
    }
    to {
        -webkit-transform: translateY(0%);
    }
}
@-moz-keyframes moveFromBottom {
    from {
        -moz-transform: translateY(100%);
    }
    to {
        -moz-transform: translateY(0%);
    }
}
@-ms-keyframes moveFromBottom {
    from {
        -ms-transform: translateY(100%);
    }
    to {
        -ms-transform: translateY(0%);
    }
}

<ul class="ca-menu">
  <li>
    <a href="#">
      <span class="ca-icon">A</span>
      <div class="ca-content">
        <h2 class="ca-main">Exceptional Service</h2>
        <h3 class="ca-sub">Personalized to your needs</h3>
      </div>
    </a>
  </li>
</ul>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

transition

中删除所有.ca-icon媒体资源

Fiddle

-moz-只需要-webkit-@keyframes前缀,-ms-的{​​{1}}前缀不存在,它被认为是好的做法是包括一个没有前缀的@keyframes。虽然这不会导致问题,但只是告诉了你。

答案 1 :(得分:1)

此处的问题是在Add an existing file上同时使用transitionanimation

工作演示:http://jsfiddle.net/3kkpa4v5/1/