效果预览

在线演示

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

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

可交互视频

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

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

https://scrimba.com/p/pEgDAM/ceBEytp

源代码下载

本地下载

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

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

代码解读

定义 dom,用 <nav>, <ul> , <li> 构建导航结构,每个 <li> 中包含表示气泡的 4 个 <span>

&lt;nav&gt;&lt;ul&gt;&lt;li&gt;home&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/nav&gt;

居中显示:

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

设置按钮样式:

nav ul {list-style-type: none;margin: 0;padding: 0;
}nav ul li {--c: goldenrod;color: var(--c);font-size: 16px;border: 0.3em solid var(--c);border-radius: 0.5em;width: 12em;height: 3em;text-transform: uppercase;font-weight: bold;font-family: sans-serif;letter-spacing: 0.1em;text-align: center;line-height: 3em;
}

在按钮下面画出气泡:

nav ul li {position: relative;
}nav ul li span {position: absolute;width: 25%;height: 100%;background-color: var(--c);transform: translateY(150%);border-radius: 50%;
}

把 4 个气泡并排摆放:

nav ul li span {left: calc((var(--n) - 1) * 25%);
}nav ul li span:nth-child(1) {--n: 1;
}nav ul li span:nth-child(2) {--n: 2;
}nav ul li span:nth-child(3) {--n: 3;
}nav ul li span:nth-child(4) {--n: 4;
}

增加当鼠标悬停在按钮上时,4 个气泡依次出现的效果:

nav ul li span {transition: 0.5s;transition-delay: calc((var(--n) - 1) * 0.1s);
}nav ul li:hover span {transform: translateY(0) scale(2);
}

隐藏按钮外的内容,形成只在悬停时气泡才出现的效果:

nav ul li {overflow: hidden;
}

把气泡放到下层,文字放到上层:

nav ul li {z-index: 1;transition: 0.5s;
}nav ul li span {z-index: -1;
}nav ul li:hover {color: black;
}

在 dom 中再增加几个按钮:

&lt;nav&gt;&lt;ul&gt;&lt;li&gt;home&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;products&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;services&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;contact&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/nav&gt;

最后,给按钮之间留出空隙:

nav ul li {margin: 1em;
}

大功告成!

原文地址:https://segmentfault.com/a/1190000015560736

如何用纯 CSS 创作气泡填色的按钮特效相关推荐

  1. 如何用纯 CSS 创作一个金属光泽 3D 按钮特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/full/MGeRRO 可交互视频教程 此 ...

  2. 如何用纯 CSS 创作一个金属光泽 3D 按钮特效 1

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/full/MGeRRO 可交互视频教程 此 ...

  3. 如何用纯 CSS 创作背景色块变换的按钮特效

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

  4. 4. 纯 CSS 创作一个金属光泽 3D 按钮特效

    4. 纯 CSS 创作一个金属光泽 3D 按钮特效 原文地址:https://segmentfault.com/a/1190000014599280 HTML代码: <div class=&qu ...

  5. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视 ...

  6. 如何用纯 CSS 创作一个精彩的彩虹 loading 特效

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

  7. 如何用纯 CSS 创作出平滑的层叠海浪特效

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

  8. 如何用纯CSS将图片填满div,自适应容器大小

    如何用纯CSS将图片填满div,自适应容器大小  2016-10-11 13:33   网页设计   标签:css 代码   5987    3 我有一个模板,想按常规做一个div里面放置一个img图 ...

  9. 如何用纯 CSS 创作一个小球上台阶的动画

    如何用纯 CSS 创作一个小球上台阶的动画 效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/come ...

最新文章

  1. python基础题-Python基础30道测试题(字符串相关)
  2. 深度学习方法笔记之(三):基于区域的卷积神经网络介绍(RCNN)
  3. 分布式主流配置中心介绍:Apollo/Nacos/Spring Cloud Config/Disconf等
  4. SSM项目搭建之配置文件
  5. 白鹭引擎生成自定义整数随机数
  6. GitHub标星3.6k | 给AI一张高清照片,分分钟还你3D人体模型
  7. orcad如何设置模块化设计_这个模块化的办公桌让您设计每一个元素,以创造完美的工作设置...
  8. java输入输出高速
  9. 基于 SOA 的组件化业务基础平台
  10. C++ explicit关键字
  11. 专家称秦始皇遗体可能保存完好(图)
  12. 【J2EE规范】什么是JNDI
  13. Linux下音乐播放器的实现
  14. 计算机找不到海信电视,海信电视突然看不了电视直播了,怎么解决?当贝市场良心分享...
  15. Linux分区efi,什么时候建立分区的时候需要建立EFI分区
  16. 大数据推荐算法概念简述
  17. 欧文内容返回字符串php,欧文写的 phpcms代码执行过程
  18. java dwg文件_如何用java实现dwg的预览图?
  19. 内存爆满导致电脑卡顿
  20. Android图片文字识别(阿里OCR接口)

热门文章

  1. JNI编程支持X86处理器的步骤
  2. smc数显压力表设定方法_压力控制器工作原理与设定方法
  3. iOS安全之class-dump的安装和使用
  4. php mod11 10公式,AQL RQL
  5. 360浏览器打不开qq空间_浏览器变慢有救了!只要2秒,重回新安装一样爽快!
  6. huber loss
  7. Cocoapods 私有库
  8. 【BZOJ 4832】 [Lydsy2017年4月月赛] 抵制克苏恩 期望概率dp
  9. URL参数解析与反解析
  10. android ViewPager 不带滑动效果切换item