本篇文章给大家带来的内容是关于如何使用纯CSS实现万圣节的toggle控件(附源码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
效果预览
源代码地址
https://github.com/shanyuhai123/learnCSS/tree/master/0159-halloween-switcher
代码解读
定义容器 halloween-switcher
, 通过 checkbox
来实现切换
<section class="halloween-switcher"> <input type="checkbox" id="halloween-input"> <label for="switch-input" class="halloween-label"> <div class="pumpkin-container"></div> <div class="vampire-container"></div> </label> </section>
引入字体, 居中显示:
@import url('https://fonts.googleapis.com/css?family=Kodchasan'); * { font-family: 'Kodchasan'; } html { font-size: 20px; } body { width: 100vw; height: 100vh; display: flex; align-items: center; justify-content: center; background: #081219; overflow: hidden; }
设置实际容器 label
大小
.halloween-label { width: 30rem; height: 10rem; border: 3px solid #E56D48; border-radius: 10rem; cursor: pointer; display: flex; align-items: center; position: relative; }
增加两种容器的配色
html { --pumpkin-color: #E56D48; --vampire-color: #4D7C99; }
定义 pumpkin-container
, vampire-container
容器 及 文字
.halloween-input ~ .halloween-label::before, .halloween-input:checked ~ .halloween-label::before { position: absolute; font-size: 2.5rem; text-transform: uppercase; } .halloween-input ~ .halloween-label::before { content: 'Pumpkin'; color: var(--pumpkin-color); left: 70%; transform: translateX(-70%); } .halloween-input:checked ~ .halloween-label::before { content: 'Vampire'; color: var(--vampire-color); left: 25%; transform: translateX(-25%); } .halloween-input ~ .halloween-label .pumpkin-container, .halloween-input ~ .halloween-label .vampire-container { width: 9.5rem; height: 9.5rem; border-radius: 50%; position: absolute; left: 0.25rem; overflow: hidden; } .halloween-input ~ .halloween-label .pumpkin-container { background-color: var(--pumpkin-color); filter: opacity(1); } .halloween-input ~ .halloween-label .vampire-container { background-color: var(--vampire-color); filter: opacity(0); } .halloween-input:checked ~ .halloween-label .pumpkin-container { left: calc(100% - 0.25rem); transform: translateX(-100%); filter: opacity(0); } .halloween-input:checked ~ .halloween-label .vampire-container { left: calc(100% - 0.25rem); transform: translateX(-100%); filter: opacity(1); }
增加 label
容器 颜色渐变
.halloween-label { border: 3px solid var(--label-border-color); transition: .5s ease-in-out; } .halloween-label { --label-border-color: var(--pumpkin-color); } .halloween-input:checked ~ .halloween-label { --label-border-color: var(--vampire-color); }
pumpkin-container
, vampire-container
容器 及 文字
动画效果
.halloween-input ~ .halloween-label::before, .halloween-input:checked ~ .halloween-label::before { transition: .5s ease; } .halloween-input ~ .halloween-label .pumpkin-container, .halloween-input ~ .halloween-label .vampire-container { transition: .5s ease; }
先绘画 pumpkin
, 补全 pumpkin-container
<p class="pumpkin-container"> <p class="pumpkin__eyes-n-nose"></p> <p class="pumpkin__mouth-n-teeths"></p> </p>
新增果肉颜色
html { --pumkin-pulp-color: #330A0F; }
绘画 pumpkin
的 pumpkin__eyes-n-nose
伪元素画出眼睛
.pumpkin__eyes-n-nose { position: absolute; top: 20%; width: 0; height: 0; border-style: solid; border-width: 0 0.8rem 1.6rem 0.8rem; color: var(--pumpkin-color); border-bottom-color: var(--pumkin-pulp-color); background-color: var(--pumkin-pulp-color); } .pumpkin__eyes-n-nose::before, .pumpkin__eyes-n-nose::after { content: ''; position: absolute; width: 1rem; height: 1rem; background-color: var(--pumkin-pulp-color); border-radius: 50%; top: 0.5rem; left: 0; } .pumpkin__eyes-n-nose::before { margin-left: -3.25rem; } .pumpkin__eyes-n-nose::after { margin-left: 2.25rem; }
绘画 pumpkin
的 pumpkin__mouth-n-teeths
伪元素画出牙齿
.pumpkin__mouth-n-teeths { position: absolute; width: 6.5rem; height: 3.25rem; bottom: 10%; background-color: var(--pumkin-pulp-color); border-radius: 0 0 6.5rem 6.5rem; } .pumpkin__mouth-n-teeths::before, .pumpkin__mouth-n-teeths::after { content: ''; position: absolute; height: 0.75rem; width: 1rem; background-color: var(--pumpkin-color); } .pumpkin__mouth-n-teeths::before { top: 0; left: 1.25rem; } .pumpkin__mouth-n-teeths::after { height: 1rem; bottom: 0; right: 1.25rem; }
再绘画 vampire
, 补全 vampire-container
<p class="vampire-container"> <p class="vampire__eyes"></p> <p class="vampire__mouth"> <p class="vampire__teeths"></p> <p class="vampire__tongue"></p> </p> </p>
利用 伪元素 绘出 vampire-container
的脸
.vampire-container::before, .vampire-container::after { content: ''; position: absolute; width: 100%; height: 100%; background-color: #c2def2; /* face color */ border-radius: 45% 45% 0 0; top: 0.75rem; } .vampire-container::before { left: -4rem; } .vampire-container::after { right: -4rem; }
伪元素绘出 vampire__eyes
.vampire__eyes { top: 20%; position: absolute; z-index: 1; } .vampire__eyes::before, .vampire__eyes::after { content: ''; position: absolute; width: 1rem; height: 1rem; background-color: #d63e49; /* eye-color */ border-radius: 50%; top: 0.5rem; left: 0; } .vampire__eyes::before { margin-left: -3.25rem; } .vampire__eyes::after { margin-left: 2.25rem; }
绘出 vampire__mouth
.vampire__mouth { position: absolute; width: 6.5rem; height: 3.25rem; background-color: var(--pumkin-pulp-color); bottom: 10%; border-radius: 0 0 6.5rem 6.5rem; display: flex; justify-content: center; overflow: hidden; z-index: 1; }
绘出 vampire__teeths
门牙, 伪元素绘出牙齿
.vampire__teeths { position: absolute; width: 100%; height: 1rem; background-color: #fffae6; top: -1px; } .vampire__teeths::before, .vampire__teeths::after { content: ''; position: absolute; width: 0; height: 0; color: transparent; border-style: solid; border-width: 0.65rem 0.375rem 0 0.375rem; border-top-color: #fffae6; top: 0.95rem; } .vampire__teeths::before { left: 1rem; } .vampire__teeths::after { right: 1rem; }
绘出 vampire__tongue
.vampire__tongue { position: absolute; width: 3.5rem; height: 1.75rem; background-color: #d63e49; bottom: -0.75rem; border-radius: 3.5rem 3.5rem 0 0; }
再接着把 checkbox
隐藏掉即可
.halloween-input { display: none; }
增加微笑动画 smile
.vampire__teeths { animation: smile 2s ease-in-out infinite; } .vampire__tongue { animation: smile 3s ease-in-out infinite; } @keyframes smile { 50% { transform: scaleY(1.5); } }
以上是如何使用纯CSS实现万圣节的toggle控件(附源码)的详细内容。更多信息请关注PHP中文网其他相关文章!

在本周的综述中:datepickers正在让键盘用户头痛,一个新的Web组件编译器,有助于与Fouc进行战斗,我们终于获得了造型列表项目标记,以及在您的网站上获得网络攻击的四个步骤。

在本周的Web平台新闻世界中,Google搜索控制台可以更轻松地查看爬行的标记,我们了解到自定义属性


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。