效果预览

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

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 创作一根闪电连接线相关推荐

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

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

  2. 前端每日实战:100# 视频演示如何用纯 CSS 创作闪闪发光的霓虹灯文字

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

  3. 前端每日实战:60# 视频演示如何用纯 CSS 创作一块乐高积木

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

  4. 前端每日实战:140# 视频演示如何用纯 CSS 创作文本的淡入动画效果

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

  5. 前端每日实战:34# 视频演示如何用纯 CSS 创作在文本前后穿梭的边框

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

  6. 前端每日实战:151# 视频演示如何用纯 CSS 创作超能陆战队的大白

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

  7. 前端每日实战:62# 视频演示如何用纯 CSS 创作一只蒸锅

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

  8. 前端每日实战:73# 视频演示如何用纯 CSS 创作一只卡通狐狸

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

  9. 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机

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

最新文章

  1. Set、Map、和WeakSet、WeakMap
  2. 工程路径网站图片路径的问题 绝对路径
  3. 如何在Ubuntu上使用ssh-add永久添加私钥? [关闭]
  4. matlab 读取WAV文件
  5. 深度学习每层的通道数如何计算_模型通道剪枝之DMCP: Differentiable Markov Channel Pruning...
  6. python-argparse批量修改后缀名-batch_file_rename.py
  7. linux io端口复用,Linux系统IO复用接口(select、poll、epoll)
  8. 2018蓝桥杯模拟赛·青出于蓝而胜于蓝 DFS序+树状数组
  9. MongoDB 定位 oplog 必须全表扫描吗?
  10. 为什么explorer.exe会占有大量的CPU?
  11. 基于Docker快速搭建ELK
  12. 【java】java 如何不使用第三个变量来交换两个数的值
  13. python字典由键插值_SciPyTutorial-一元插值interp1d
  14. 查询结果按中文拼音顺序排序
  15. h2o api java_H2O框架简介
  16. STM32CubeMX+Proteus仿真DS18B20
  17. 2019 年第 31 周 DApp 影响力排行榜 | TokenInsight
  18. 教你5分钟制作出一个Unity图像追踪的AR Demo(使用EasyAR插件4.1版本,个人版,免费)
  19. 内网渗透之Windows 系统下的目标信息收集
  20. js实现网站文本朗读(文字转语音)

热门文章

  1. JavaScript移除绑定在元素上的匿名事件处理函数
  2. 使用命令wsimport构建WebService客户端
  3. 在iOS端如何使用Charles用作http调试
  4. Android.mk文件语法规范及使用模板 (转载)
  5. ASPXspy 2.0
  6. 读dataframe存入mysql_DataFrame数据保存到mysql数据库中
  7. php 怎么分布式,php分布式怎么部署
  8. python精品课_【人生苦短,我用Python】Python免费精品课连载(1)——Python入门
  9. DTD(文档类型定义)概述
  10. centos8配置防火墙