前端每日实战:66# 视频演示如何用纯 CSS 创作一台咖啡机
效果预览
按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。
https://codepen.io/comehope/pen/rKPLMW
可交互视频
此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。
请用 chrome, safari, edge 打开观看。
https://scrimba.com/p/pEgDAM/c6NzPfK
源代码下载
每日前端实战系列的全部源代码请从 github 下载:
https://github.com/comehope/front-end-daily-challenges
代码解读
定义 dom,容器中包含机体、出水口、咖啡杯、按钮和咖啡:
<div class="coffee-machine">
    <span class="body"></span>
    <span class="spout"></span>
    <span class="cup"></span>
    <span class="button"></span>
    <span class="coffee"></span>
</div>居中显示:
body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right bottom, sandybrown, darkred);
}定义容器尺寸:
.coffee-machine {
    width: 15em;
    height: 15em;
    background-color: white;
    font-size: 20px;
    border-radius: 50%;
    border: 2em solid white;
}画出机体的外框:
.coffee-machine {
    position: relative;
    display: flex;
    justify-content: center;
}
.body {
    position: absolute;
    width: 8em;
    height: 12em;
    background-color: sandybrown;
    border-radius: 1.2em;
    top: 1.5em;
    border-right: 0.6em solid peru;
}用伪元素画出机体的中间部分:
.body::after {
    content: '';
    position: absolute;
    width: 8em;
    height: 8em;
    background-color: darkslategray;
    top: 2em;
    border-right: 0.6em solid black;
}画出出水口:
.spout {
    position: absolute;
    width: 3em;
    height: 1em;
    background-color: white;
    top: 3.5em;
    border-radius: 0.5em;
    border-right: 0.5em solid silver;
}画出咖啡杯的杯体:
.cup {
    position: absolute;
    width: 3em;
    height: 2em;
    background-color: white;
    bottom: 3.5em;
    border-radius: 0 0 1.4em 1.4em;
    border-right: 0.5em solid silver;
}用伪元素画出咖啡杯的把手:
.cup::after {
    content: '';
    position: absolute;
    width: 0.6em;
    height: 0.6em;
    border: 0.3em solid silver;
    border-radius: 50%;
    right: -1.2em;
    top: 0.2em;
}画出按钮:
.button {
    position: absolute;
    width: 1.2em;
    height: 1.2em;
    background-color: tomato;
    border-radius: 50%;
    bottom: 2em;
    right: 4.5em;
}画出咖啡:
.coffee::before,
.coffee::after {
    content: '';
    position: absolute;
    width: 0.7em;
    height: 5em;
    background-color: chocolate;
    top: 4.5em;
    left: calc((15em - 0.7em) / 2);
}接下来润色一下。
为咖啡机增加光影:
.coffee-machine {
    z-index: 1;
}
.coffee-machine::before,
.coffee-machine::after {
    content: '';
    position: absolute;
    width: 2em;
    height: 2em;
    border: 0.3em solid transparent;
    z-index: 2;
    border-radius: 50%;
    border-left-color: white;
    left: 3.8em;
}
.coffee-machine::before {
    top: 1.8em;
    transform: rotate(40deg);
}
.coffee-machine::after {
    bottom: 1.8em;
    transform: rotate(-40deg);
}定义咖啡流动的前半段动画,即咖啡从出水口流到杯中:
.coffee::before {
    animation: 2s linear infinite;
    animation-name: pouring-before;
    transform-origin: top;
}
@keyframes pouring-before {
    0%, 20% {
        transform: scaleY(0);
    }
    30%, 100% {
        transform: scaleY(1);
    }
    70%, 100% {
        visibility: hidden;
    }
}定义咖啡流动的后半段动画,即出水口停止流出咖啡,剩余咖啡流到杯中:
.coffee::after {
    animation: 2s linear infinite;
    animation-name: pouring-after;
    transform-origin: bottom;
}
@keyframes pouring-after {
    0%, 70% {
        visibility: hidden;
        transform: scaleY(1);
    }
    80%, 100% {
        transform: scaleY(0);
    }
}大功告成!
前端每日实战:66# 视频演示如何用纯 CSS 创作一台咖啡机的更多相关文章
- 前端每日实战:63# 视频演示如何用纯 CSS 创作一台烤面包机
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OEBJRN 可交互视频 此视频是可 ... 
- 前端每日实战:94# 视频演示如何用纯 CSS 创作一台拍立得照相机
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/YjYgey 可交互视频 此视频是可 ... 
- 前端每日实战:74# 视频演示如何用纯 CSS 创作一台 MacBook Pro
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXNNyR 可交互视频 此视频是可 ... 
- 前端每日实战:53# 视频演示如何用纯 CSS 创作一个文本淡入淡出的 loader 动画
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ERwpeG 可交互视频 此视频是可 ... 
- 前端每日实战:92# 视频演示如何用纯 CSS 创作一颗逼真的土星
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/EpbaQX 可交互视频 此视频是可 ... 
- 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VEyoGj 可交互视频 此视频是可 ... 
- 前端每日实战:158# 视频演示如何用纯 CSS 创作一个雨伞 toggle 控件
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/pxLbjv 可交互视频 此视频是可 ... 
- 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ZMwgqK 可交互视频 此视频是可 ... 
- 前端每日实战:161# 视频演示如何用纯 CSS 创作一张纪念卓别林的卡片(没有笑声的一天就是被荒废的一天)
		效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/WaaBNV 可交互视频 此视频是可 ... 
随机推荐
- JS自定义随机数字键盘
			<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- 流氓软件修改IE主页的解决方法
			运行regedit HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main 修改以下url Default_Page_URL Firs ... 
- 安卓环境home assistant搭建
			准备搞个智能家居玩玩 先从home assistant(后面简写为HASS)开始吧 莫得树莓派,拿旧手机凑活一下 准备材料: root过的安卓机 一.安卓机Linux环境搭建 个人习惯不详细写基础环境 ... 
- 20180805-Java 异常处理
			try{ //程序代码}catch(ExceptionName e1){ //Catch 块} 下面的例子中声明有两个元素的一个数组,当代码试图访问数组的第三个元素的时候就会抛出一个异常. //文件名 ... 
- 2019 年百度之星·程序设计大赛 - 复赛   Diversity  (树形DP)
			题目:https://vjudge.net/contest/325352#problem/A 题意:给你一棵树,每个点给一个区间,可以选区间里面任何一个数,然后问怎么安排得到最大边两点之间的差值和,求 ... 
- How to not show unnecessary zeros when given integers but still have float answers when needed
			NSString *str = [NSString stringWithFormat:@"%g",12.10]; NSLog(@"str = %@",str); ... 
- vue2.0 之 douban (七)APP 打包
			在打包之前需要修改一个地方,那就是config->index.js文件,修改assetsPublicPath: '/'为assetsPublicPath: './',截图如下 上面文件改好后,开 ... 
- ubuntu搭建jdk+jenkins
			第一步,安装jdk(如果已安装,直接进行第二步) 1.下载 jdk-8u172-linux-x64.tar.gz 点此下载 2.解压 tar -zxvf jdk-8u172-linux ... 
- (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】
			前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ... 
- poj2236Wireless Network
			Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have ... 
