效果预览

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

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

可交互视频

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

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

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

源代码下载

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

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

代码解读

定义 dom,容器中包含的几个元素分别代表头部、眼睛、嘴、身体和腿:

  1. <div class="buddha">
  2. <div class="head"></div>
  3. <div class="eyes"></div>
  4. <span class="mouth"></span>
  5. <span class="body"></span>
  6. <span class="legs"></span>
  7. <span class="shadow"></span>
  8. </div>

居中显示:

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background: linear-gradient(white, bisque);
  8. }

定义容器尺寸、设置子元素水平居中对齐:

  1. .buddha {
  2. width: 13em;
  3. height: 19em;
  4. font-size: 20px;
  5. border: 1px dashed black;
  6. display: flex;
  7. align-items: center;
  8. flex-direction: column;
  9. position: relative;
  10. }

画出头部轮廓:

  1. .head {
  2. width: 12.5em;
  3. height: 12.5em;
  4. color: peachpuff;
  5. background: currentColor;
  6. border-radius: 50%;
  7. filter: brightness(0.9);
  8. }

用伪元素画出眼睛:

  1. .eyes::before,
  2. .eyes::after {
  3. content: '';
  4. position: absolute;
  5. width: 1em;
  6. height: 0.5em;
  7. border: 0.6em solid #333;
  8. border-radius: 1em 1em 0 0;
  9. border-bottom: none;
  10. top: 6em;
  11. }
  12. .eyes::before {
  13. left: 2.5em;
  14. }
  15. .eyes::after {
  16. right: 2.5em;
  17. }

画出嘴巴:

  1. .mouth {
  2. position: absolute;
  3. width: 1.5em;
  4. height: 0.5em;
  5. border: 0.5em solid tomato;
  6. border-radius: 0 0 1.5em 1.5em;
  7. border-top: none;
  8. top: 9em;
  9. }

画出身体:

  1. .body {
  2. position: absolute;
  3. width: 10em;
  4. height: 8em;
  5. background-color: coral;
  6. border-radius: 4em;
  7. bottom: 1em;
  8. z-index: -1;
  9. }

画出腿:

  1. .legs {
  2. position: absolute;
  3. width: inherit;
  4. height: 5em;
  5. background-color: coral;
  6. border-radius: 2.5em;
  7. bottom: 0;
  8. z-index: -1;
  9. }

用阴影画出耳朵和手:

  1. .head {
  2. box-shadow:
  3. 5.8em 2em 0 -4.8em, /* ear right*/
  4. -5.8em 2em 0 -4.8em, /* ear left*/
  5. 0 8.6em 0 -4.5em; /* hand */
  6. }

用径向渐变画出眉心:

  1. .head {
  2. background:
  3. radial-gradient(
  4. circle at 50% 40%,
  5. tomato 0.6em,
  6. transparent 0.6em
  7. ), /* circle between eyebrows */
  8. currentColor;
  9. }

画出身体的阴影:

  1. .shadow {
  2. position: absolute;
  3. width: inherit;
  4. height: 5em;
  5. background-color: rgba(0, 0, 0, 0.2);
  6. border-radius: 50%;
  7. bottom: -4em;
  8. transform: rotateX(100deg);
  9. }

让小和尚上下浮动:

  1. .buddha {
  2. animation: animate 3s ease-in-out infinite;
  3. }
  4. @keyframes animate {
  5. 50% {
  6. transform: translateY(-2em);
  7. }
  8. }

让阴影保持在固定位置,不随着人浮动:

  1. .shadow {
  2. animation: shadow-animate 3s ease-in-out infinite;
  3. }
  4. @keyframes shadow-animate {
  5. 50% {
  6. transform: rotateX(100deg) translateY(-10em) scale(0.7);
  7. }
  8. }

大功告成!

前端每日实战:102# 视频演示如何用纯 CSS 创作一个小和尚的更多相关文章

  1. 前端每日实战:122# 视频演示如何用纯 CSS 创作一个苹果系统的相册图标

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

  2. 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)

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

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

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

  4. 前端每日实战:156# 视频演示如何用纯 CSS 创作一个飞机舷窗风格的 toggle 控件

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

  5. 前端每日实战:25# 视频演示如何用纯 CSS 创作一个慧星拖尾效果的 loader 动画

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

  6. 前端每日实战:30# 视频演示如何用纯 CSS 创作一个晃动的公告板

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

  7. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画

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

  8. 前端每日实战:86# 视频演示如何用纯 CSS 创作一个方块旋转动画

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

  9. 前端每日实战:91# 视频演示如何用纯 CSS 创作一个行驶中的火车 loader

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

随机推荐

  1. 吴裕雄--天生自然python机器学习:Logistic回归

    假设现在有一些数据点,我们用 一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称作回归.利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类 ...

  2. Elasticsearch-URL查询实例解析

    ES(elasticsearch),以下简称ES ES的查询有query.URL两种方式,而URL是比较简洁的一种,本文主要以实例探讨和总结URL的查询方式 1.语法 curl [ -s][ -g][ ...

  3. day44-线程

    #1.开启线程: from threading import Thread import os def func(): print('func',os.getpid()) t = Thread(tar ...

  4. RDD(一)——概述

    什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象(其实是计算抽象).代码中是一个抽象类,它代表一个不可变.可分区. ...

  5. 吴裕雄--天生自然 R语言开发学习:基础知识

    1.基础数据结构 1.1 向量 # 创建向量a a <- c(1,2,3) print(a) 1.2 矩阵 #创建矩阵 mymat <- matrix(c(1:10), nrow=2, n ...

  6. HDU1166 敌兵布阵 [线段树模板]

    题意:在序列中修改单点和查询区间和 #include<iostream> #include<cstdio> #include<cstring> #define ls ...

  7. DSU On Tree——Codeforces 600E(E. Lomsat gelral)

    有这么一类问题,要求统计一棵树上与子树相关的某些信息,比如:在一棵所有节点被染色的树上,统计每棵子树上出现次数最多的颜色编号之和. 很自然的可以想到用DFS序+主席树去求解,但是编码复杂度很高: 然后 ...

  8. vue使用日记

    使用vue-cli生成单页应用框架, npm run serve之后即可开始修改src目录下面的js css文件(index.html可以保持不动), 自动热部署 , 前端框架就已经搭起来了. web ...

  9. Dcoker跨主机容器通信之overlay

    同样是两台服务器: 准备工作: 设置容器的主机名 consul:kv类型的存储数据库(key:value) docker01.02上: vim /etc/docker/daemon.json { &q ...

  10. 原创:CentOS 环境中 Zabbix 3.4 的安装部署实践

    IT管理工作中,如果没有对服务器.网络设备.服务.进程.应用等的监控,往往是用户发送问题报告后才知道出了问题.事后救火显得被动,不能从容面对问题. 才有了部署一套网络监控系统的想法,机缘巧合下结识了Z ...