内容简介:让我们用CSS从电影Big Hero 6中创建Baymax角色。在这篇文章中,我们将动画一个背景图像,以及一个微妙的动画计时效果,并用一个单独的HTML元素制作一个CSS演示。你可以在这里全屏看到它。
让我们用CSS从电影Big Hero 6中创建Baymax角色。
在这篇文章中,我们将动画一个背景图像,以及一个微妙的动画计时效果,并用一个单独的HTML元素制作一个CSS演示。
你可以在这里全屏看到它。
单个元素
通过使用伪元素,我们将能够使用一个HTML元素创建面部部分。
<div class="baymax"></div> 复制代码
样式
为了设置舞台,我们将在屏幕上添加一个微妙的渐变,使其看起来像一个弯曲的白色头。为此,我们将在 body
上使用径向渐变。
body { background: radial-gradient(circle at center, #fff, #fff 50%, #aaa); background-size: 100% 100%; background-repeat: no-repeat; height: 100vh; } 复制代码
接下来,我们将面部定位在页面的中心。嘴是一条简单的黑线,我们将使用边框创建。
.baymax { border-bottom: 1.5em solid #000; position: absolute; top: 50%; left: 50%; width: 50%; transform: translate(-50%, -40%); } 复制代码
第一个属性设置宽度为 1.5em
的黑色边框。然后使用绝对定位定位线,将其向下推动50%,从左侧向下推动50%。这些50%的值与容器( body
)元素的大小有关。
我们现在遇到的问题是元素现在开始在屏幕的中间和中途开始。它偏离中心。
为了抵消这一点,我们使用一个变换将元素拉向其宽度的50%,并将其宽度增加40%。
在这个阶段,嘴巴像这样居中:
加眼睛
我们将利用 before
和 after
伪元素为面部添加眼睛。这不需要任何额外的HTML,完全由CSS处理。
.baymax::before { background: #000; border-radius: 50%; content: ""; position: absolute; width: 12em; height: 12em; left: -9em; top: -6em; transform: skewX(-4deg); } .baymax::after { background: #000; border-radius: 50%; content: ""; position: absolute; width: 12em; height: 12em; right: -9em; top: -6em; transform: skewX(4deg); } 复制代码
这些伪元素中的每一个都具有黑色背景,并且边界半径为50%以使它们成为圆形。每个都位于嘴的一端,最后有一个 skew
变换,使它们看起来像是向后倾斜了一点。结果应如下所示:
低电量
电影中有一个有趣的场景,Baymax的电池电量不足。他四处乱窜,眼皮下垂。我们可以使用背景渐变和动画的组合来创建效果。
首先我们要给背景两种颜色。眼睛部分为黑色,黑色为眼睑,白色为眼睑。首先需要将白色部分放在眼睛外面,然后我们将其设置为动画,使眼睑下垂。
.baymax::before { background: linear-gradient(to bottom, #efefef, #efefef 50%, #000 50%, #000); background-position: 0 -100%; background-size: 200% 200%; ... } .baymax::after { background: linear-gradient(to bottom, #efefef, #efefef 50%, #000 50%, #000); background-position: 0 -100%; background-size: 200% 200%; ... } 复制代码
我们添加了一个背景线性渐变,使其成为容器高度的两倍,然后将其定位,使上半部分位于容器外部。
有了两个背景渐变,我们可以添加动画 keyframes
来控制眼睑运动。
@keyframes blink { 0%, 50% { background-position: 0 100%; } 85%, 95% { background-position: 0 75%; } 100% { background-position: 0 100%; } } 复制代码
动画 keyframes
是一种使用百分比描述一系列帧的方法。百分比与动画的持续时间有关。所以50%的百分比意味着动画的一半。
通过这种方式,我们可以将背景设置为直到中途,然后在50%到85%之间,向下移动,然后在动画结束时快速向后移动。
下一步是告诉伪元素使用这些动画关键帧。将 animation
属性添加到现有样式。
.baymax::before { animation: blink 6s infinite; ... } .baymax::after { animation: blink 6s 0.1s infinite; ... } 复制代码
在这里,我们告诉浏览器在每个元素上使用 blink
动画。动画持续时间设置为6秒,并将无限循环。
在第二个例子中有一个额外的属性。 6s
后的 0.1
秒告诉浏览器将该动画延迟 0.1
秒。这会产生第二只眼睛比第一只眼睛稍晚关闭的效果。它增加了疲倦的下垂效果,使它看起来更加人性化。最终结果应如下所示:
你可以在这里全屏看到它。
浏览器
在代码示例中,我省略了任何常用的 -webkit
和 -moz
前缀。 transform
和 animation
属性应该是前缀,我建议使用像Autoprefixer这样的东西。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
ActionScript 3.0 Cookbook
Joey Lott、Darron Schall、Keith Peters / Adobe Dev Library / 2006-10-11 / GBP 28.50
Well before Ajax and Microsoft's Windows Presentation Foundation hit the scene, Macromedia offered the first method for building web pages with the responsiveness and functionality of desktop programs......一起来看看 《ActionScript 3.0 Cookbook》 这本书的介绍吧!