博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端每日实战:75# 视频演示如何用纯 CSS 创作一支摇曳着烛光的蜡烛
阅读量:6700 次
发布时间:2019-06-25

本文共 2595 字,大约阅读时间需要 8 分钟。

图片描述

效果预览

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

可交互视频

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

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

源代码下载

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

代码解读

定义 dom,容器中包含 4 个元素,分别代表光晕、火焰和灯芯:

居中显示:

body {    margin: 0;    height: 100vh;    display: flex;    align-items: center;    justify-content: center;    background: black;}

画出蜡烛的轮廓:

.candle {    width: 15em;    height: 30em;    font-size: 10px;    background: linear-gradient(        orange,        darkorange,        sienna,        saddlebrown 50%,        rgba(0, 0, 0, 0.6)    );    box-shadow:         inset 2em -3em 5em rgba(0, 0, 0, 0.4),        inset -2em 0 5em rgba(0, 0, 0, 0.4);    border-radius: 10em / 4em;}

用伪元素画出蜡烛的顶面:

.candle {    position: relative;}.candle::before {    content: '';    position: absolute;    width: inherit;    height: 5em;    border: 0.2em solid darkorange;    border-radius: 50%;    box-sizing: border-box;    background: radial-gradient(        #444,        orange,        saddlebrown,        sienna,        darkorange    );    filter: opacity(0.7);}

画出蜡烛的灯芯:

.candle {    display: flex;    justify-content: center;}.thread {    position: absolute;    width: 0.6em;    height: 3.6em;    top: -1.8em;    background: linear-gradient(        #111,        black,        orange 90%    );    border-radius: 40% 40% 0 0;}

画出蜡烛的内焰:

.flames {    position: absolute;    width: 2.4em;}.flames::before {    content: '';    position: absolute;    width: inherit;    height: 6em;    background-color: royalblue;    top: -4.8em;    border-radius: 50% 50% 35% 35%;    border: 0.2em solid dodgerblue;    box-sizing: border-box;    filter: opacity(0.7);}

画出蜡烛的外焰:

.flames::after {    content: '';    position: absolute;    width: inherit;    height: 12em;    top: -12em;    background: linear-gradient(white 80%, transparent);    border-radius: 50% 50% 20% 20%;    box-shadow: 0 -0.6em 0.4em darkorange;}

画出光晕:

.glow {    position: absolute;    width: 10em;    height: 18em;    background-color: orangered;    border-radius: 50%;    top: -16.5em;    filter: blur(6em);}

为外焰增加摇曳的效果:

.outer-flame {    animation:         enlarge 5s linear infinite,        move 6s linear infinite;}@keyframes move {    0%, 100% {        transform: rotate(-2deg);    }    50% {        transform: rotate(2deg);    }}@keyframes enlarge {    0%, 100% {        height: 12em;        top: -12em;    }    50% {        height: 14em;        top: -13em;    }}

为光晕增加闪烁效果:

.glow {    animation: blink 100ms infinite;}@keyframes blink {    to {        filter: blur(6em) opacity(0.8);    }}

最后,使蜡烛垂直居中:

.candle {    top: 10em;}

大功告成!

转载地址:http://vswlo.baihongyu.com/

你可能感兴趣的文章
NuGet学习笔记(1) 初识NuGet及快速安装使用
查看>>
PHP笔试题——遍历文件目录
查看>>
Asp.net和C# 函数方法 (2)【转载】
查看>>
百度分享代码(备用)
查看>>
SqlMapConfig.xml 配置
查看>>
wget用法详解
查看>>
在多个线程中避免和发现伪共享
查看>>
[Ubuntu] Ubuntu如何查看cronjob
查看>>
session监听
查看>>
Android Studio更新升级方法
查看>>
virtualbox主机与虚拟机互访,虚拟机上网
查看>>
ios相关手册、图表等综合
查看>>
SharpZipLib 文件/文件夹压缩
查看>>
百分比定位加position定位的常用布局
查看>>
Codeforces Round #257 (Div. 2/A)/Codeforces450A_Jzzhu and Children
查看>>
android 拍照注意问题
查看>>
form中的button按钮在IE11中自动提交表单问题导致弹出框关闭之后表单被重置
查看>>
在多个游戏视图间切换环境准备
查看>>
Linux命令-权限管理命令:chown
查看>>
第三方推送-使用推
查看>>