导读:本期聚焦于江户川创作的《如何用CSS3画出小黄人并实现动画效果?附完整代码示例》,敬请观看详情。想用纯前端技术复刻动画角色却卡在图形拼接上?小黄人这类卡通形象看似复杂,其实拆解后就是圆形身体、镜框眼睛与背带裤的组合。借助CSS3的border-radius构建椭圆与正圆,用绝对定位摆放五官,再配合@keyframes让眼睛转动与身体摇摆,无需任何图片素材就能在浏览器里跑起来。本文给出可直接复制的代码示例,说明每层结构的层级关系与动画时序,帮助你掌握用div加样式画画的核心思路,并能迁移到其它卡通形象的制作中。

用CSS3绘制小黄人并加上动画,本质上是在用盒模型拼装几何图形。我们把一个黄色圆角矩形作为身体,两个白色圆圈当眼白,中间放灰色镜框,再补一条蓝色背带裤。动画部分交给@keyframes,让眼睛左右看、整体轻微晃动,观感就活了。下面从结构搭建讲起。

如何用CSS3画出小黄人并实现动画效果?附完整代码示例

一、HTML结构如何拆解小黄人部件

小黄人虽然是个卡通角色,但放到网页里就是一堆嵌套的div。最外层是一个容器,用来限制整体大小与定位上下文。里面分别放身体、眼睛组、镜框、嘴巴和背带裤。这种拆分方式和画素描时先打草稿再填细节是一致的,只要每个部件独立成节点,后面写CSS才能精准控制。

很多初学者喜欢把所有样式写在一个div上,结果调一个圆角就影响了嘴巴位置。正确做法是身体归身体,眼睛归眼睛。比如眼睛组用一个相对定位的包裹层,内部两个眼白用绝对定位左右分开,镜框再用伪元素或单独标签盖上去。这样层级清晰,动画也能只作用于某一层而不波及其它。

下面是一段基础HTML,没有加任何类样式,只是把零件摆好。注意这里全部使用div,没有语义化标签,因为纯展示型动画角色不需要屏幕阅读器去读结构。

<div class="minion">
  <div class="body"></div>
  <div class="eyes">
    <div class="eye left"></div>
    <div class="eye right"></div>
    <div class="goggle"></div>
  </div>
  <div class="mouth"></div>
  <div class="pants"></div>
</div>

二、用CSS3形状与定位画出静态小黄人

静态造型靠的是border-radius和背景色。身体是一个宽高接近的矩形,但上下用大圆角变成胶囊形,背景填黄色。眼睛是白色正圆,镜框用灰色边框的椭圆跨在两只眼睛上,制造出连体眼镜的效果。背带裤用蓝色矩形遮挡身体下半部分,再用两条细长方块当背带。

定位方面,外层.minion设置position: relative,内部零件全部position: absolute并以百分比或像素对齐。比如眼睛组放在身体上部三分之一处,左右眼各偏移一定距离。镜框宽度要覆盖两只眼,所以left取负值或居中处理。嘴巴用一条扁椭圆配深色边框表示微笑。以下样式可直接运行,变量值可按喜好微调。

.minion {
  position: relative;
  width: 200px;
  height: 320px;
  margin: 50px auto;
}
.body {
  position: absolute;
  width: 200px;
  height: 300px;
  background: #ffd400;
  border-radius: 100px;
  top: 0;
  left: 0;
}
.eyes {
  position: absolute;
  top: 70px;
  left: 50%;
  transform: translateX(-50%);
  width: 120px;
  height: 60px;
}
.eye {
  position: absolute;
  width: 50px;
  height: 50px;
  background: #fff;
  border-radius: 50%;
  top: 0;
}
.eye.left { left: 0; }
.eye.right { right: 0; }
.goggle {
  position: absolute;
  width: 130px;
  height: 60px;
  border: 6px solid #888;
  border-radius: 40px;
  top: -5px;
  left: -5px;
  box-sizing: border-box;
}
.mouth {
  position: absolute;
  width: 80px;
  height: 20px;
  border: 3px solid #5a4a00;
  border-radius: 0 0 40px 40px;
  top: 150px;
  left: 50%;
  transform: translateX(-50%);
}
.pants {
  position: absolute;
  width: 200px;
  height: 90px;
  background: #2b5c9e;
  border-radius: 0 0 100px 100px;
  bottom: 0;
  left: 0;
}

上述代码画出的已经是一个静止的小黄人。如果只在浏览器打开,它会乖乖站着。但CSS3的强项在于不依赖JS就能让画面动起来,接下来我们看动画怎么写。

三、使用@keyframes实现眼睛转动与身体摇摆

动画核心是把变化过程拆成关键帧。眼睛转动可以定义一个eye-move,从translateX(0)到translateX(10px)再回来,制造眼球左右瞟的效果。身体摇摆用swing,让整个.minion做小角度rotate,配合transform-origin底部,看起来像在不稳地站着。

为了让动画连贯且不生硬,我们给不同部件设不同duration和iteration-count。眼睛快一点、无限循环;身体慢一点、也无限循环但错开延迟。下面代码展示如何绑定。注意动画名要和keyframes定义一致,浏览器才会生效。

@keyframes eye-move {
  0% { transform: translateX(0); }
  50% { transform: translateX(12px); }
  100% { transform: translateX(0); }
}
@keyframes swing {
  0% { transform: rotate(-3deg); }
  50% { transform: rotate(3deg); }
  100% { transform: rotate(-3deg); }
}
.eye {
  animation: eye-move 1.2s infinite ease-in-out;
}
.minion {
  transform-origin: bottom center;
  animation: swing 2.5s infinite ease-in-out;
}

把这段CSS接在前面样式后面,小黄人就会自己晃并转眼。若想加更多细节,比如手臂摆动,只需补一个div写类似keyframes即可。这种纯CSS方案好处是性能好,不占主线程,适合加载动画或趣味页头。掌握了部件拆分与关键帧绑定,你也能画出其它角色并赋予性格化动作。

CSS3小黄人绘制keyframes动画修改时间:2026-08-17 10:40:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。