来自 澳门威尼斯人平台 2019-12-04 16:28 的文章
当前位置: 澳门威尼斯人平台 > 澳门威尼斯人平台 > 正文

澳门威尼斯人平台Twitter的”fave”动画

Twitter的”fave”动画

2015/05/12 · HTML5 · Twitter, 动画

本文由 伯乐在线 - 刘健超-J.c 翻译,胡屹 校稿。未经许可,禁止转载!
英文出处:cssanimation.rocks。欢迎加入翻译组。

当我第一次打开 twitter 的时候,就被它的启动动画惊艳到了。然而分析一下这个动画其实也不难实现,于是赶紧做一个出来看看。

来来来,今天咱们通过实现一个类似Twitter的启动动画来看看CAKeyFrame Animation和CAAnimation Group怎么玩。

十大超越原作的动画——三爷比漫画美多了

2016-9-17 00:08| 发布者: 团长| 查看: 683 | 评论: 0 |来自: 网络

有很多漫画被改编成动画后,观众都会对原作和动画进行对比。有日媒评出了十大超越原作漫画的动画,其中就包括了毫无节操的《银魂》以及原作漫画潦草到吓人的《进击的巨人》。

十大超越原作漫画的动画

第1位:《鲁邦三世》(作者:Monkey Punch)

第2位:《银魂》

第3位:《蜡笔小新》

第4位:《轻音少女!》(作者:kakifly)

第5位:《海螺小姐》

第6位:《樱桃小丸子》

第7位:《进击的巨人》

第8位:《星空清理者》

第9位:《妙手小厨师》

第10位:《根性青蛙》

点击下载漫社堂APP,看更多人气动漫作品

【漫社堂动漫资讯部于9月17日整理报道,转载请注明出处!】

喜欢 偷看 热烈 这是神马 睡去

Twitter的“fave” 动画

最近 Twitter 通过引入一段新的动画重新设计了“fave”按钮(也叫“fav”)。这段动画并不依赖 CSS transition,而是由一系列图片组成的。下面展示如何用 CSS 的 animation-timing-function 属性中的 steps 时序函数(timing function)重新制作这段动画。

澳门威尼斯人平台 1

所以今天咱们的重点到了第七章,CAKeyFrame Animation和CAAnimation Group。最后的那个启动动画完全是为了实践一下看看CAKeyFrame Animation和CAAnimation Group怎么使用。

运动产生的错觉

这段动画的效果类似于观看古老的西洋镜,该装置呈现的是一系列连续的围绕着圆筒的插画。在下面的示例中,我们不使用圆筒,而是在某个元素内部呈现一系列图片。

  • 布置一个与 LaunchScreen 相同的界面
  • 让视图中间的 Logo 先缩小后放大直至盖满整个屏幕
  • Logo 在放大过程中逐渐变透明
  • Initial View Controller 的内容稍微放大后恢复原状

有读者私下说更新速度太慢了。在码云上看了一下下载的统计,发现其实下载的童鞋并不是特别多。如果只是看看思路,或者复习一下这些基础知识,确实是很快。但是如果对于这些内容不是特别熟悉,建议还是敲一边代码,看看自己能碰到什么坑。

示例

把鼠标悬停在星星上就可以看到动画效果(请到原文查看动画效果——译者注)。

在本示例中,我们将从制作一系列能组成动画的图片开始。在这里,我们使用来自 Twitter 的“fave”图标动画的部分图片集:

澳门威尼斯人平台 2

为了能让这些帧动起来,我们需要把它们放置在一排上。在这个文件中,这些帧已经排列在一排上了,这意味着我们可以通过设置背景位置(background-position)属性使背景从第一帧过渡到最后一帧。

澳门威尼斯人平台 3

拆分完之后就好办咯,一步步来实现吧~

俺写一篇分享文章大约要4~6个小时,大体是三部分:想到合适的例子,敲代码写注释,写文章。通常都会看自己当前的情况,决定是先写swift版还是OC版,然后不动脑子的翻译成另外一版调整一下BUG。这样也是为了训练自己,前段时间发现自己有时候会不自觉的把两种语言混在一起,这个习惯特别不好,所以想用这种方式自己纠正一下。到最后更新写文章的时候反而更轻松了,因为不用动脑。哈哈~

Steps() 时序函数

大多数的时序函数,例如 ease(缓冲)和 cubic-bezier(三次贝塞尔),都能让元素从初始状态平滑地过渡到最终状态。steps 时序函数与此不同,它并不是平滑地过渡,而是将过渡过程分割为一定数量的步骤,并且在这些步骤之间快速地移动。

澳门威尼斯人平台 4

我们先建立如下的 HTML 代码:

XHTML

<section class="fave"></section>

1
<section class="fave"></section>

由于后面需要让 logo 变透明,我们选择用 mask 来实现。

Come on~下面这张图纯粹是为了简书当作封面使用的。也不知道为什么,以前简书还能自动把GIF的第一桢当作封面,现在不好使了。

背景图片

接下来, 我们可以添加一些样式并设置背景图片位置:

澳门威尼斯人平台 5

CSS

.fave { width: 70px; height: 50px; background: url(images/twitter_fave.png) no-repeat; background-position: 0 0; }

1
2
3
4
5
6
.fave {
  width: 70px;
  height: 50px;
  background: url(images/twitter_fave.png) no-repeat;
  background-position: 0 0;
}

加了悬停状态后,一旦鼠标悬停在该元素上,背景就会从我们指定的位置移动到这一系列图片中最后一张的位置上(为了兼容浏览器,注意要添加相应的浏览器内核前缀——译者注)。

CSS

.fave:hover{ animation: fave 1s steps(55); } @keyframes fave{ 0%{ background-position:0 0; } 100%{ background-position:-3519px 0; } }

1
2
3
4
5
6
7
8
9
10
11
.fave:hover{
  animation: fave 1s steps(55);
}
@keyframes fave{
  0%{
    background-position:0 0;
  }
  100%{
    background-position:-3519px 0;
  }
}

请注意第1个规则 animation。在本例中,我们利用 steps 时序函数,让background-position 属性经历了一个持续时间为1秒的过渡。在 steps 部分的“55”这个值,代表了这段动画是由55帧组成的。

当我们将鼠标悬停在这个元素上时,所看到的效果是其背景图片通过55个相同的步骤经历了一次过渡。

另外这个案例,也可以用 transition 实现:

CSS

.fave:hover { background-position: -3519px 0; transition: background 1s steps(55); }

1
2
3
4
.fave:hover {
  background-position: -3519px 0;
  transition: background 1s steps(55);
}
let logoLayer = CALayer()logoLayer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)logoLayer.position = view.centerlogoLayer.contents = UIImage(named: "logo")?.cgImageview.layer.mask = logoLayer

CAKeyFrame Animation和CAAnimation Group.png

本文由澳门威尼斯人平台发布于澳门威尼斯人平台,转载请注明出处:澳门威尼斯人平台Twitter的&#8221;fave&#8221;动画

关键词: