所以,我知道如何同时执行CSS3transitionsanimations.现在还不清楚的是,我已经在谷歌上搜索过了,那就是什么时候该用哪一种.

例如,如果我想让球反弹,很明显动画是可行的.我可以提供关键帧,浏览器会做中间帧,我会有一个很好的动画.

然而,在某些情况下,上述效果可以通过任何一种方式实现.一个简单而常见的例子是实现facebook风格的滑动抽屉菜单:

此效果可以通过如下过渡实现:

.sf-page {
    -webkit-transition: -webkit-transform .2s ease-out;
}

.sf-page.out {
    -webkit-transform: translateX(240px);
}

http://jsfiddle.net/NwEGz/

或者,通过这样的动画:

.sf-page {
    -webkit-animation-duration: .4s;
    -webkit-transition-timing-function: ease-out;
}

.sf-page.in {
    -webkit-animation-name: sf-slidein;
    -webkit-transform: translate3d(0, 0, 0);
}

.sf-page.out {
    -webkit-animation-name: sf-slideout;
    -webkit-transform: translateX(240px);
}

@-webkit-keyframes sf-slideout {
    from { -webkit-transform: translate3d(0, 0, 0); }
    to { -webkit-transform: translate3d(240px, 0, 0); }
}
 
@-webkit-keyframes sf-slidein {
    from { -webkit-transform: translate3d(240px, 0, 0); }
    to { -webkit-transform: translate3d(0, 0, 0); }
}

http://jsfiddle.net/4Z5Mr/

HTML看起来是这样的:

<div class="sf-container">
    <div class="sf-page in" id="content-container">
        <button type="button">Click Me</button>
    </div>
    <div class="sf-drawer">
    </div>
</div>

并且,附带的jQuery脚本如下:

$("#content-container").click(function(){
    $("#content-container").toggleClass("out");
    // below is only required for css animation route
    $("#content-container").toggleClass("in");
});

我想了解的是这些方法的利弊是什么.

  1. 一个明显的区别是动画需要更多的代码.
  2. 动画提供了更好的灵活性.我可以有不同的动画来滑出和滑入
  3. 关于表现,有什么可以说的吗.两者都利用了h/w加速吗?
  4. 哪一个更现代,前进的道路是什么?
  5. 你还有什么要补充的吗?

推荐答案

看起来你已经掌握了怎么做,只是不知道什么时候做.

转换100,仅在两个不同状态(即开始状态和结束状态)之间执行的转换.就像抽屉菜单一样,开始状态可以是打开的,结束状态可以是关闭的,反之亦然.

如果你想执行一些特别涉及开始状态和结束状态的事情,或者你需要对过渡中的关键帧进行更细粒度的控制,那么你必须使用动画.

Css相关问答推荐

转换间隙值时基于百分比的弹性元素&跳转

防止表格水平拉伸整个Blazor页面

Firefox未正确设置SVG的父div的宽度

当值小于 1 时理解 flex-shrink

具有水平和垂直滚动的表格上的活动 scss 类

包含tailwind 中固定纵横比框的内容

CSS:如何在嵌套计数器中有多个计数器

如何在特定元素之前 Select 每个元素

如何为使用jsTreeR拖入层次 struct node 的元素添加顺序编号?

如何将 Google 字体链接到我的 Nuxt 文件?

如何使单选按钮看起来像切换按钮

CSS中的旋转地球

使用 JavaScript 将 CSS 添加到 ?

找到第一个可滚动的父级

iPhone X / 8 / 8 Plus CSS 媒体查询

单选按钮和标签显示在同一行

CSS - 使 div 水平对齐

如何使 window.scrollTo() 效果平滑

为什么我的 div 边距重叠,我该如何解决?

使用 CSS 更改
高度