效果预览

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

https://codepen.io/comehope/pen/odKrpy

可交互视频教程

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/p/pEgDAM/cV7J6SK

源代码下载

每日前端实战系列的全部源代码请从 github 下载:

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,只有一个元素:

  1. <div class="panda"></div>

居中显示:

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background-color: mediumturquoise;
  8. }

定义容器尺寸:

  1. .panda {
  2. width: 21em;
  3. height: 16em;
  4. background-color: white;
  5. }

画出头部轮廓:

  1. .panda {
  2. border: 0.5em solid #333;
  3. border-top-left-radius: 11em;
  4. border-top-right-radius: 11em;
  5. border-bottom-left-radius: 11em 6em;
  6. border-bottom-right-radius: 11em 6em;
  7. }

画出右眼轮廓:

  1. .panda {
  2. position: relative;
  3. }
  4. .panda::before {
  5. content: '';
  6. position: absolute;
  7. width: 7em;
  8. height: 4em;
  9. left: 2.9em;
  10. top: 5.5em;
  11. background-color: #333;
  12. border-radius: 50% 50% 45% 42%;
  13. transform: rotate(-45deg);
  14. }

类似地,画出左眼轮廓:

  1. .panda::after {
  2. content: '';
  3. position: absolute;
  4. width: 7em;
  5. height: 4em;
  6. left: 11.1em;
  7. top: 5.5em;
  8. background-color: #333;
  9. border-radius: 50% 50% 42% 45%;
  10. transform: rotate(45deg);
  11. }

画出两只耳朵:

  1. .panda::before {
  2. box-shadow: 1em -7.2em 0 -0.4em #333;
  3. }
  4. .panda::after {
  5. box-shadow: -1em -7.2em 0 -0.4em #333;
  6. }

画出两只眼睛:

  1. .panda::before {
  2. background-image:
  3. radial-gradient(circle at 5.1em 2em, white 0.3em, transparent 0.3em),
  4. radial-gradient(circle at 4.6em 2em, #333 0.7em, transparent 0.7em),
  5. radial-gradient(circle at 4.5em 2em, white 1em, transparent 1em);
  6. }
  7. .panda::after {
  8. background-image:
  9. radial-gradient(circle at 2.4em 1.5em, white 0.3em, transparent 0.3em),
  10. radial-gradient(circle at 2.4em 2em, #333 0.7em, transparent 0.7em),
  11. radial-gradient(circle at 2.5em 2em, white 1em, transparent 1em);
  12. }

画出鼻子和嘴:

  1. .panda {
  2. background-image:
  3. radial-gradient(ellipse at 50% 60%, #333 1.2em, transparent 1.2em),
  4. radial-gradient(ellipse at 50% 80%, #555 0.6em, transparent 0.6em);
  5. }

增加一点立体效果:

  1. .panda {
  2. border-bottom-width: 1em;
  3. box-shadow: inset 1em -1em 0 #eee;
  4. }

让右眼动起来:

  1. .panda::before {
  2. animation: before-animate 1s ease-in-out infinite alternate;
  3. }
  4. @keyframes before-animate {
  5. to {
  6. background-image:
  7. radial-gradient(circle at 4.9em 1.8em, white 0.3em, transparent 0.3em),
  8. radial-gradient(circle at 4.4em 1.8em, #333 0.7em, transparent 0.7em),
  9. radial-gradient(circle at 4.5em 2em, white 1em, transparent 1em);
  10. }
  11. }

类似地,让左眼也动起来:

  1. .panda::after {
  2. animation: after-animate 1s ease-in-out infinite alternate -1s;
  3. }
  4. @keyframes after-animate {
  5. to {
  6. background-image:
  7. radial-gradient(circle at 2.6em 1.3em, white 0.3em, transparent 0.3em),
  8. radial-gradient(circle at 2.6em 1.8em, #333 0.7em, transparent 0.7em),
  9. radial-gradient(circle at 2.5em 2em, white 1em, transparent 1em);
  10. }
  11. }

最后,让黑眼圈和耳朵也动起来:

  1. @keyframes before-animate {
  2. to {
  3. transform: rotate(-40deg);
  4. }
  5. }
  6. @keyframes after-animate {
  7. to {
  8. transform: rotate(40deg);
  9. }
  10. }

大功告成!

前端每日实战:35# 视频演示如何把 CSS 径向渐变用得出神入化,只用一个 DOM 元素就能画出国宝熊猫的更多相关文章

  1. 35.在CSS中 只用一个 DOM 元素就能画出国宝熊猫

    原文地址:https://segmentfault.com/a/1190000015052653 感想: 真神奇! HTML code: <div class="panda" ...

  2. 前端每日实战:11# 视频演示如何用纯 CSS 创作一个荧光脉冲 loader 特效

    效果预览 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视频是可以交 ...

  3. 前端每日实战:92# 视频演示如何用纯 CSS 创作一颗逼真的土星

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/EpbaQX 可交互视频 此视频是可 ...

  4. 前端每日实战:144# 视频演示如何用 D3 和 GSAP 创作一个集体舞动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gdVObN 可交互视频 此视频是可 ...

  5. 前端每日实战:158# 视频演示如何用纯 CSS 创作一个雨伞 toggle 控件

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/pxLbjv 可交互视频 此视频是可 ...

  6. 前端每日实战:141# 视频演示如何用 CSS 的 Grid 布局创作一枚小狗邮票

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/BOeEYV 可交互视频 此视频是可 ...

  7. 前端每日实战:161# 视频演示如何用纯 CSS 创作一张纪念卓别林的卡片(没有笑声的一天就是被荒废的一天)

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/WaaBNV 可交互视频 此视频是可 ...

  8. 前端每日实战:138# 视频演示如何用纯 CSS 创作一张 iPhone 价格信息图

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OorLGZ 可交互视频 此视频是可 ...

  9. 前端每日实战:142# 视频演示如何用 CSS 的 Grid 布局创作一枚小鸡邮票

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mGZbmQ 可交互视频 此视频是可 ...

随机推荐

  1. Linux中的atim、mtime、ctime

    - Linux中的atime.mtime.ctime 一.文件中的atime.mtime.ctime 1.含义及各种事件标记的显示方法 atime:最近一次访问文件的时间用ls -lu看到的时间为at ...

  2. python 定时器,轮询定时器

    首先想要实现的效果是:每隔1段时间,就去调用1个接口确认结果,直到接口返回的结果为true,停止调用 所以这里会用到python的定时器 先来了解最简单的定时器: python 定时器默认定时器只执行 ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_3_流式思想概述

  4. 测开之路九十七:js的引用方式

    第一种:引用外部js文件 准备一个js文件 <!-- 引用外部的js --><script src="../js/js01.js"></script& ...

  5. http://bbs.csdn.net/topics/340046630 dbgrid怎么获取当前记录值

    这根grid无关,当你选中一条记录时,数据集就定位到这条数据上了,你只需要读取数据集中的数据就行了   对我有用[0] 丢个板砖[0] 引用 | 举报| 管理 hongss hongss 本版等级: ...

  6. Application.Restore不起作用了

    http://www.myexception.cn/delphi/695243.html Application.Restore不起作用了窗体上只有一个Button和一个Timer(1秒计时)代码如下 ...

  7. 抓取某高校附近共享单车位置,并使用web方式展示过去几天的位置变化

    效果如图 使用了高德地图API:https://lbs.amap.com/api/javascript-api/example/marker/massmarks js代码如下: function Ma ...

  8. C#之委托(二)

    其实在上一篇委托(一)中,创建委托还是太繁琐了点.代码量过多,可能会妨碍我们对代码和逻辑的理解.有些时候可能处理逻辑的代码都笔声明委托的代码要少,这就不可避免的增加了重复代码的量.所以在c#2中极大的 ...

  9. uni-app-在开启小程序在微信开发工具打开时,打开失败,解决方法:手动打开

    这是我自学ui-app的第一张记录内容,问题都是我在实际开发中遇到的问题 1.微信开发工具打开失败,提示是: 接着我的流程就是打开上面提到的链接,进入页面:https://developers.wei ...

  10. redis集群主从中断,报io过高 不错

    问题原因:1.由于这个集群redis操作非常频繁,1分钟操作数据达到1-2G,所有自动aof非常频繁,主从复制打包rdb也非常频繁,之前配置已经无法满足要求报异常如下6943:M 19 Jul 20: ...