前端每日实战:93# 视频演示如何用纯 CSS 创作一根闪电连接线
效果预览
按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。
https://codepen.io/comehope/pen/RBjdzZ
可交互视频
此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。
请用 chrome, safari, edge 打开观看。
https://scrimba.com/p/pEgDAM/cgkE6C6
源代码下载
每日前端实战系列的全部源代码请从 github 下载:
https://github.com/comehope/front-end-daily-challenges
代码解读
定义 dom,容器中包含 2 个元素,分别代表插头和线缆:
<div class="cable"><span class="head"></span><span class="body"></span>
</div>
居中显示:
body {margin: 0;height: 100vh;display: flex;align-items: center;
}
定义容器尺寸:
.cable {display: flex;align-items: center;font-size: 10px;margin-left: 5em;
}
画出插头的轮廓:
.head {width: 8.5em;height: 8.5em;border-radius: 2em 0 0 2em;
}
画出插头上针脚的轮廓:
.head {position: relative;
}.head::before {content: '';position: absolute;width: 3em;height: 7.3em;top: calc((8.5em - 7.3em) / 2);left: 0.7em;border-radius: 1em;box-sizing: border-box;
}
画出线缆中手持部位的轮廓:
.body {width: 15.5em;height: 11em;border-radius: 0.5em;
}
画出线缆中稍粗部位的轮廓:
.body {position: relative;display: flex;align-items: center;
}.body::before {content: '';position: absolute;width: 13.5em;height: 6em;left: 15.5em;
}
画出线缆的延长线部分:
.body::after {content: '';position: absolute;width: 100vh;height: 3.9em;left: calc(15.5em + 13.5em);
}
隐藏画面外的部分:
body {overflow: hidden;
}
接下来绘制细节。
为延长线涂上渐变色:
.body::after {background:linear-gradient(white,hsl(0, 0%, 96%) 5%, hsl(0, 0%, 97%) 25%, hsl(0, 0%, 95%) 40%, hsl(0, 0%, 81%) 95%,white);
}
为线缆中稍粗部位涂上渐变色:
.body::before {background:linear-gradient(white,hsl(0, 0%, 96%) 5%, hsl(0, 0%, 98%) 20%, hsl(0, 0%, 95%) 50%, hsl(0, 0%, 81%) 95%,white);
}
为线缆中手持部位涂上渐变色:
.body {background:linear-gradient(hsl(0, 0%, 91%),white 15%, hsl(0, 0%, 93%) 50%, hsl(0, 0%, 87%) 70%,hsl(0, 0%, 79%) 90%,hsl(0, 0%, 84%), hsl(0, 0%, 86%));
}
为插头涂上渐变色:
.head {background:linear-gradient(-45deg, hsl(0, 0%, 75%),hsl(0, 0%, 79%),hsl(0, 0%, 78%),hsl(0, 0%, 87%) 80%);
}
在插头上画出针脚:
.head::before {background-color: white;
}.head::after {content: '';position: absolute;box-sizing: border-box;width: 2.2em;height: 0.4em;color: goldenrod;background-color: currentColor;border-radius: 0.5em;left: 1.1em;top: 1.2em;box-shadow: 0 0.8em 0,0 1.6em 0,0 2.4em 0,0 3.2em 0,0 4em 0,0 4.8em 0,0 5.6em 0;
}
接下来添加阴影,使线缆更立体。
绘制插头上的阴影:
.head {background:linear-gradient(90deg, transparent 80%,rgba(0,0,0,12%)),linear-gradient(-45deg, hsl(0, 0%, 75%),hsl(0, 0%, 79%),hsl(0, 0%, 78%),hsl(0, 0%, 87%) 80%);
}
绘制线缆手持部分的阴影:
.body::before {background:linear-gradient(45deg, rgba(0,0,0,4%) 10%,transparent 20%), linear-gradient(90deg, rgba(0,0,0,4%), transparent 10%),linear-gradient(white,hsl(0, 0%, 96%) 5%, hsl(0, 0%, 98%) 20%, hsl(0, 0%, 95%) 50%, hsl(0, 0%, 81%) 95%,white);
}
绘制线缆中稍粗部位的阴影:
.body::after {background:linear-gradient(45deg, rgba(0,0,0,4%),transparent 4%),linear-gradient(90deg, rgba(0,0,0,4%),transparent 2%),linear-gradient(white,hsl(0, 0%, 96%) 5%, hsl(0, 0%, 97%) 25%, hsl(0, 0%, 95%) 40%, hsl(0, 0%, 81%) 95%,white);
}
最后,为画面增加入场动画
.cable {animation: show 5s linear infinite;
}@keyframes show {0% {transform: translateX(100vw);}20%, 100% {transform: translateX(0);}
}
大功告成!
前端每日实战:93# 视频演示如何用纯 CSS 创作一根闪电连接线相关推荐
- 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKzjqK 可交互视频教程 此视频 ...
- 前端每日实战:100# 视频演示如何用纯 CSS 创作闪闪发光的霓虹灯文字
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GBwvxw 可交互视频 此视频是可 ...
- 前端每日实战:60# 视频演示如何用纯 CSS 创作一块乐高积木
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/qKKqrv 可交互视频 此视频是可 ...
- 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ZMwgqK 可交互视频 此视频是可 ...
- 前端每日实战:34# 视频演示如何用纯 CSS 创作在文本前后穿梭的边框
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/qYepNv 可交互视频教程 此视频 ...
- 前端每日实战:151# 视频演示如何用纯 CSS 创作超能陆战队的大白
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ReGRaO 可交互视频 此视频是可 ...
- 前端每日实战:62# 视频演示如何用纯 CSS 创作一只蒸锅
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/YvOzNy 可交互视频 此视频是可 ...
- 前端每日实战:73# 视频演示如何用纯 CSS 创作一只卡通狐狸
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OEKZed 可交互视频 此视频是可 ...
- 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/yxVYRL 可交互视频 此视频是可 ...
最新文章
- Set、Map、和WeakSet、WeakMap
- 工程路径网站图片路径的问题 绝对路径
- 如何在Ubuntu上使用ssh-add永久添加私钥? [关闭]
- matlab 读取WAV文件
- 深度学习每层的通道数如何计算_模型通道剪枝之DMCP: Differentiable Markov Channel Pruning...
- python-argparse批量修改后缀名-batch_file_rename.py
- linux io端口复用,Linux系统IO复用接口(select、poll、epoll)
- 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组
- MongoDB 定位 oplog 必须全表扫描吗?
- 为什么explorer.exe会占有大量的CPU?
- 基于Docker快速搭建ELK
- 【java】java 如何不使用第三个变量来交换两个数的值
- python字典由键插值_SciPyTutorial-一元插值interp1d
- 查询结果按中文拼音顺序排序
- h2o api java_H2O框架简介
- STM32CubeMX+Proteus仿真DS18B20
- 2019 年第 31 周 DApp 影响力排行榜 | TokenInsight
- 教你5分钟制作出一个Unity图像追踪的AR Demo(使用EasyAR插件4.1版本,个人版,免费)
- 内网渗透之Windows 系统下的目标信息收集
- js实现网站文本朗读(文字转语音)
热门文章
- JavaScript移除绑定在元素上的匿名事件处理函数
- 使用命令wsimport构建WebService客户端
- 在iOS端如何使用Charles用作http调试
- Android.mk文件语法规范及使用模板 (转载)
- ASPXspy 2.0
- 读dataframe存入mysql_DataFrame数据保存到mysql数据库中
- php 怎么分布式,php分布式怎么部署
- python精品课_【人生苦短,我用Python】Python免费精品课连载(1)——Python入门
- DTD(文档类型定义)概述
- centos8配置防火墙