用html和css制作动态图片,用HTML和CSS实现WWDC 2015上的动画效果

本文介绍了如何使用HTML和CSS来重构苹果WWDC15邀请函中的图标。作者通过分析图标构成,将其拆分为大圆、小形状和内容方块,并详细阐述了每个部分的实现方式,包括形状的创建、颜色的叠加、旋转和动画效果的添加。文章强调了代码的可重用性和优化,如通过CSS动画和伪类实现动态效果,以及如何利用autoprefixer处理浏览器前缀。
摘要由CSDN通过智能技术生成

译者:周晓楷(@Helkyle)

每年,苹果都会召开一次重大的会议。WWDC(苹果开发者大会)是iOS开发者和OSX开发者学习苹果先进高科技和移动设备与桌面软件新概念的好机会。

每一年的这个时候,他们都会制造出很多新创意,今年,我被一个用简单圆圈和形状制作出来的图标所惊艳,于是我决定用HTML和CSS来实现它。

WWDC 15邀请卡

苹果的图标通常都会使用颜色和形状的叠加,比如iOS 7 Photos图标。今年WWDC邀请函用了下面这货。

2c2c85b99c19fbb0e6b14c06bf2bf0d3.png

它由一些列层叠和半透明的形状构成,非常适合用HTML和CSS来实现。

HTML

设计这样一块负责的东西需要稍微分析一下。首先,我把它分解成各个部分。 大方向看它是由三种形状构成的,主要图形为8个大圆,我先把它们列出来:

662696c9819df83ab1160028ab3ee3e3.png

这里我分割成几个类,这样做方便后面把large,circle,等类提取出来单独写,代码会整洁很多。

然后我们有八个小形状,处于大圆的上边,这些形状由4个圆形和4个方形构成,方形是由圆角的,我这样写HTML

226c81caa797dc02fd322caf9b55223e.png

我用了circle,squircle以及数字1到8来为各个div设置类名,这样做的好处是,后面为它们设置形状和颜色的时候很方便。

最后我们把两个大方形反倒logo中间。

ad2663cfe028ca421682cd6fe2ee1e13.png

同样,我用了large和squircle。

Logo和内容

接下来我们给中间的方形增添点内容。

44afafc836e7f2700a9096ee0faad15e.png

这里我们用了一个SVG图片,还有邀请函的内容。邀请函的字体为San Francisco 但是字体不是OSX标准的,所以这里我换成Helvetica Neue Light。

写圆和方块样式

我要做的第一件事是把circle和squircle的样式写好。

be3273001943e26666bf60cb4073020f.png

大部分形状是大得,所以这我把默认值设大了。每个元素的定位都是absolute并且有一个白的边框。边框可能不会跟邀请函的一模一样,但是可以给形状多点光泽。

接下来我们给大圆加上样式,设置border-radius为50%,并且使用left,top值设置位置。

c18a5079e762f762031790957d99765f.png

这个时候所有的圆都是在同一个位置上边。我们使用点小技巧,通过transform-origin的值来改变位置。默认的transform-origin值为(50%,50%),这里我们把值设为圆的底部,然后我们稍微旋转一下,形状就出来了。

ab7a1f68f5e45aba83542d5c4fe3f71e.png

让我们给每个圆添加CSS样式,仔细研究邀请函的图片,我们可以看到一个圆的位置在左下角。知道了这一点,我们就可以写出其他与圆圈的旋转角度。

daf3fe9653ffe7f4601167c9136d9a08.png

每个块都有一个颜色,并且旋转一定角度。下面的动画动态展示了生成过程。

b56236b4fc649a6aea090fa44d39ba01.gif

有了上面这些原型,我们给其他形状写样式。首先方形也可以看成有不同圆角的圆。

28292425c627d5330eba8e05be1f53e4.png

当我们定位了圆以后,我们给了特定的旋转角度和颜色。高兴的是,相同的形状也可以使用相同的样式,我们写好小形状的样式。

93d100612699ac2cb6c3b1fccbb5166e.png

我们把这些形状设得小一些,并且离中心更远的距离。并且使用跟上面相同的诡计。

小方块

小的方形角度错了,我们需要给它旋转45deg。

24028b069d8bbb565f2f70c8cf1dc0a0.png

这里有两种方法可供选择,我们可以给每个方形加多一个额外的元素,并旋转,或者我们选择CSS中的伪类。两种方法都行,不过我更倾向于后者。

首先我们把背景颜色,边框,盒子阴影去掉。

662c6828b3494f312544449d2190fbea.png

7c248fe68f069117f111c50509b330ec.png

我们使用::after伪类来创建一个相同的方形,并旋转45deg。

881fbe47dfc55b0f42a4fe1b337c86d3.png

现在我们有了大圆和其他小形状了。

839f2fa4d52c21e1b8d2a2af404a7847.png

内容方块

两个大的方形包含所有内容,我们把他们定位到中间,并且给他们一个比较深的透明色。

1dd0069c6363adce5e11a0916a725d76.png

我们可以旋转一下第一个大方形。

6cb327c8878f1d1de4feaad8e7d0a0ee.png

b7ff25d2bdcb7cbdf924c1cbc8dff643.png

添加动画

最初的邀请函是静态的,但是我们的网站叫做CSS Animation Rocks可不是浪得虚名。

我像把每个集合分开,为了做到这一点,我用span元素把它们分别包裹起来,后面就把动画应用到span元素上即可。

e7878aaf6015cef915b1222bf056390a.png

我们先给span元素定位,防止他们溢出。

2709e48c570be2b79c058e171ceb6b1f.png

每个span元素都定位到中点。

接下来我们把动画应用到每个span元素上面。

8c2816604e0173d228b4a4776e3c3e77.png

我们使用了相同的keyframes但是改变了动画时间,分别为10s,20s,30s。于是他们一分钟后回到原来的位置

keyframes 如下所示

e9ec42168354ef65ee4bb68d4d7b72c2.png

开始位置旋转角度为0,最终旋转角度360deg。

1c86084373f9ead3aeba323b67dee03d.gif

重用CSS

这是个有趣的实验,但是我觉得最大的收获是重用了CSS.旋转和小形状使用相同的CSS很方便。还有所有的animation用了同一个keyframes。这样有助于压缩CSS文件的大小,保证加载速度。

前缀

创建这个例子的时候,我用了autoprefixer,这样就不用每次写动画都要考虑浏览器内核了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值