CSS中的“大白”——CSS 动画

栏目: CSS · 发布时间: 5年前

内容简介:让我们用CSS从电影Big Hero 6中创建Baymax角色。在这篇文章中,我们将动画一个背景图像,以及一个微妙的动画计时效果,并用一个单独的HTML元素制作一个CSS演示。你可以在这里全屏看到它。

让我们用CSS从电影Big Hero 6中创建Baymax角色。

在这篇文章中,我们将动画一个背景图像,以及一个微妙的动画计时效果,并用一个单独的HTML元素制作一个CSS演示。

CSS中的“大白”——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%。

在这个阶段,嘴巴像这样居中:

CSS中的“大白”——CSS 动画

加眼睛

我们将利用 beforeafter 伪元素为面部添加眼睛。这不需要任何额外的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 变换,使它们看起来像是向后倾斜了一点。结果应如下所示:

CSS中的“大白”——CSS 动画

低电量

电影中有一个有趣的场景,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 秒。这会产生第二只眼睛比第一只眼睛稍晚关闭的效果。它增加了疲倦的下垂效果,使它看起来更加人性化。最终结果应如下所示:

CSS中的“大白”——CSS 动画

你可以在这里全屏看到它。

浏览器

在代码示例中,我省略了任何常用的 -webkit-moz 前缀。 transformanimation 属性应该是前缀,我建议使用像Autoprefixer这样的东西。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java算法

Java算法

塞奇威克 / 赵文进 / 清华大学出版社 / 2004-06-01 / 59.0

《Java算法》用Java语言全面实现了当今最重要的计算机算法,并用大量图表和数学公式对算法进行了详尽的描述和分析。全书共分3卷,本书是其中的第1卷(第1至第4部分)。内容包括基本概念(第1部分)、数据结构(第2部分)、排序算法(第3部分)和查找算法(第4部分)。本书概念清楚,内容翔实,新颖,由浅入深地描述了算法。本书可作为高等院校计算机相关专业本科生和研究生的教材和补充读物,也可作为Java爱好一起来看看 《Java算法》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

SHA 加密
SHA 加密

SHA 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具