效果预览

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

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

可交互视频

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

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

第 1 部分:
https://scrimba.com/p/pEgDAM/c86mdUZ

第 2 部分:
https://scrimba.com/p/pEgDAM/cmVNbTW

源代码下载

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

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

代码解读

定义 dom,容器中包含一个表示酒桶的 .keg 元素和表示啤酒杯的 .glass 元素。酒桶有 2 个子元素,.handle 表示把手,.pipe 表示出水管,酒杯有 1 个表示啤酒的子元素 .beer

<div class="container"><div class="keg"><span class="handle"></span><span class="pipe"></span></div><div class="glass"><span class="beer"></span></div>
</div>

居中显示:

body {margin: 0;height: 100vh;display: flex;justify-content: center;background: linear-gradient(lightslategray 300px,#333 300px);
}

定义容器尺寸和伪元素的共有属性:

.container {width: 700px;height: 300px;position: relative;
}.container *::before,
.container *::after {content: '';position: absolute;
}

画出酒桶:

.keg {position: absolute;width: 90px;height: 200px;background: linear-gradient(to right,#777 70px,#555 70px);bottom: 0;left: 310px;
}

画出出水管和它的支架:

.keg .pipe {position: absolute;width: 10px;height: 40px;background-color: #ccc;top: 33px;left: 10px;
}.keg .pipe::before {width: 40px;height: 20px;background: radial-gradient(circle at 10px 10px,#eee 7px,#ccc 7px, #ccc 10px,transparent 10px),linear-gradient(#ccc 50%,#999 50%);border-radius: 10px;top: -2px;left: -5px;
}

画出把手:

.keg .handle {position: absolute;border-style: solid;border-width: 50px 10px 0 10px;border-color: black transparent transparent transparent;top: -10px;left: 5px;
}.keg .handle::before {width: 20px;height: 10px;background-color: #ccc;top: -60px;left: -10px;border-radius: 5px 5px 0 0;
}.keg .handle::after {width: 10px;height: 20px;background-color: #ccc;top: -20px;left: -5px;
}

画出酒杯:

.glass {position: absolute;width: 70px;height: 100px;color: rgba(255, 255, 255, 0.3);background-color: currentColor;bottom: 0;left: 300px;border-radius: 5px;
}.glass::before {width: 50px;height: 40px;border: 10px solid;top: 20px;right: -20px;border-radius: 0 40% 40% 0;clip-path: inset(0 0 0 72%);
}

画出杯中的啤酒和泡沫:

.beer {position: absolute;width: 60px;height: 80px;background-color: rgba(255, 206, 84, 0.8);bottom: 15px;left: 5px;border-radius: 0 0 5px 5px;border-top: solid rgba(255, 206, 84, 0.8);
}.beer::before {width: inherit;height: 15px;background-color: #eee;top: -15px;border-radius: 5px 5px 0 0;
}

接下来制作动画。

增加酒杯把手被压下的动画效果:

.keg .handle {transform-origin: center 50px;animation: handle 5s infinite;
}@keyframes handle {10%, 60% {transform: rotate(0deg);}20%, 50% {transform: rotate(-90deg);}
}

增加啤酒被斟满的动画效果:

.beer {animation: fillup 5s infinite;
}@keyframes fillup {0%, 20% {height: 0px;border-width: 0px;}40% {height: 40px;}80%, 100% {height: 80px;border-width: 5px;}
}

增加啤酒泡沫泛起的动画效果:

.beer::before {animation: wave 0.5s infinite alternate,fillup-foam 5s linear infinite;
}@keyframes fillup-foam {0%, 20% {top: 0;height: 0;}60%, 100% {top: -15px;height: 15px;}
}@keyframes wave {from {transform: skewY(-3deg);}to {transform: skewY(3deg);}
}

增加啤酒从出水口流出的效果:

.keg .pipe::after {width: 10px;background-color: rgba(255, 206, 84, 0.5);animation: flow 5s infinite;
}@keyframes flow {0%, 15% {top: 40px;height: 0;}20% {height: 115px;}40% {height: 75px;}55% {top: 40px;height: 50px;}60%, 100% {top: 80px;height: 0;}
}

最后,增加酒杯滑动的效果:

.glass {animation: slide 5s ease infinite;
}@keyframes slide {0% {left: 0;filter: opacity(0);}20%, 80% {left: 300px;filter: opacity(1);}100% {left: 600px;filter: opacity(0);}
}

大功告成!

前端每日实战:119# 视频演示如何用纯 CSS 创作一个接扎啤的动画(内含2个视频)...相关推荐

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

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

  2. 前端每日实战:164# 视频演示如何用原生 JS 创作一个数独训练小游戏(内含 4 个视频)...

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

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

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. 可交互视频教程 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, s ...

  4. 前端每日实战:102# 视频演示如何用纯 CSS 创作一个小和尚

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

  5. 前端每日实战:125# 视频演示如何用纯 CSS 创作一个失落的人独自行走的动画...

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

  6. 前端每日实战:160# 视频演示如何用纯 CSS 创作一个打开内容弹窗的交互动画...

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

  7. 前端每日实战:84# 视频演示如何用纯 CSS 创作一个极品飞车 loader

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

  8. python绘制图形沙漏_前端每日实战:118# 视频演示如何用纯 CSS 创作一个沙漏 loader...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, saf ...

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

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

最新文章

  1. 推荐大赛如何在一周时间内打进决赛
  2. 执行后rosrun 显示找不到包 [rospack] Error: package ‘pluming_param_server‘ not found
  3. 音视频技术开发周刊 | 215
  4. 标准库类型String
  5. css--block formatting context
  6. 图片绑定file上传并获取图片的base64
  7. Modelsim 后仿真操作步骤之二——用Modelsim单独进行后仿真
  8. -bash: ifconfig: 未找到命令
  9. python a和b字符串和占位符输出_python格式化输出
  10. 利用VS2010模仿QQ2011登陆界面
  11. Spring Cloud微服务实战_PDF电子书下载 高清 带索引书签目录_翟永超(著)
  12. AR工业应用|企业中使用的7个增强现实创新案例|effiarAR工业云平台
  13. 无线打印机 连接路由器连接到服务器,路由器连接打印机方法
  14. C语言基础知识点复习
  15. 阿里服务器配置随笔记 centos 服务器 Linux 部分命令合集
  16. (三)Linux 4G模块实现短信发送的两种格式(Text和PDU)
  17. linux火狐中设置中文,Ubuntu中firefox设置成中文
  18. 选定进行压缩的卷可能已损坏,请使用Chkdsk修复
  19. 华为云设计语言_如何评价华为软件开发云?
  20. 云台山最具特色的景点——“长宝第一洞天”龙泉洞

热门文章

  1. jquery 判断 重定向url_使用curl获取Location:重定向后url
  2. 邮件发送时间怎么修改 python_怎么发送邮箱-2分钟教会你如何利用Python库定时或者批量发送电子邮件...
  3. Android动画之萌萌哒蜡烛吹蜡烛动画
  4. 【公众号文章备份】从零开始学或许是一个谎言
  5. MyBatis Generator如何实现MYSQL分页插件
  6. 什么是LTE(Long Time Evolution 长期演进技术)
  7. linux怎么运行炒股软件,在Deepin 20系统下运行东方财富股票软件的方法
  8. 关于组策略的计算机考试题,计算机网络 管理员填空集考试卷模拟考试题
  9. 代码分享|时频分析时绘制热图进行平滑的代码
  10. gitlab客户端安装及使用