效果预览

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

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

可交互视频

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

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

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

源代码下载

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

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

代码解读

定义 dom,导航中包含一个无序列表,列表中有一个列表项:

  1. <nav>
  2. <ul>
  3. <li>home</li>
  4. </ul>
  5. </nav>

居中显示:

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background-color: lightyellow;
  8. }

隐藏列表项前端的引导符号:

  1. nav ul {
  2. padding: 0;
  3. list-style-type: none;
  4. }

设置容器尺寸:

  1. nav li {
  2. width: 8em;
  3. height: 2em;
  4. font-size: 25px;
  5. }

设置文字样式:

  1. nav li {
  2. font-size: 25px;
  3. text-align: center;
  4. line-height: 2em;
  5. font-family: sans-serif;
  6. text-transform: capitalize;
  7. }

添加伪元素,伪元素是 2 个小球:

  1. nav li {
  2. position: relative;
  3. }
  4. nav li::before,
  5. nav li::after {
  6. content: '';
  7. position: absolute;
  8. width: 0.6em;
  9. height: 0.6em;
  10. background-color: gainsboro;
  11. border-radius: 50%;
  12. }

把小球定位在左右两端:

  1. nav li::before {
  2. top: calc(50% - 0.6em / 2);
  3. left: 0;
  4. }
  5. nav li::after {
  6. bottom: calc(50% - 0.6em / 2);
  7. right: 0;
  8. }

接下来设置按钮悬停效果。

当鼠标悬停在按钮上时,让小球变为与容器大小相等的矩形:

  1. nav li:hover::before,
  2. nav li:hover::after {
  3. width: 100%;
  4. height: 100%;
  5. border-radius: 0;
  6. }

第其中一个矩形稍向右下角错位,并且加深它的颜色,形成阴影效果:

  1. nav li:hover::before {
  2. z-index: -1;
  3. top: 0;
  4. }
  5. nav li:hover::after {
  6. z-index: -2;
  7. bottom: -0.4em;
  8. right: -0.4em;
  9. filter: brightness(0.8);
  10. }

设置悬停的颜色,伪元素的矩形背景变为蓝色,文字变为白色:

  1. nav li:hover {
  2. color: white;
  3. }
  4. nav li:hover::before,
  5. nav li:hover::after {
  6. background-color: dodgerblue;
  7. }

设置缓动时间,其中伪元素的缓动时间函数用拟人的动画效果:

  1. nav li {
  2. transition: 0.5s;
  3. }
  4. nav li::before,
  5. nav li::after {
  6. transition: 0.5s cubic-bezier(0.5, -0.5, 0.25, 1.5);
  7. }

再增加几个按钮:

  1. <nav>
  2. <ul>
  3. <li>home</li>
  4. <li>products</li>
  5. <li>services</li>
  6. <li>contact</li>
  7. </ul>
  8. </nav>

最后,增加按钮之间的间距:

  1. nav li {
  2. margin: 0.8em;
  3. }

大功告成!

前端每日实战:126# 视频演示如何用纯 CSS 创作小球变矩形背景的按钮悬停效果的更多相关文章

  1. 前端每日实战:160# 视频演示如何用纯 CSS 创作一个打开内容弹窗的交互动画

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

  2. 前端每日实战:122# 视频演示如何用纯 CSS 创作一个苹果系统的相册图标

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

  3. 前端每日实战:76# 视频演示如何用纯 CSS 创作一组单元素办公用品(内含2个视频)

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

  4. 前端每日实战:58# 视频演示如何用纯 CSS 创作一只卡通鹦鹉

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

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

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

  6. 前端每日实战:147# 视频演示如何用纯 CSS 创作透视按钮的悬停特效

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

  7. 前端每日实战:124# 视频演示如何用纯 CSS 创作一只纸鹤

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

  8. 前端每日实战:157# 视频演示如何用纯 CSS 创作一个棋盘错觉动画(实际上每一行都是平行的)

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

  9. 前端每日实战:158# 视频演示如何用纯 CSS 创作一个雨伞 toggle 控件

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

随机推荐

  1. (C++C#类型互转工具)使用Signature Tool自动生成P/Invoke调用Windows API的C#函数声明

    在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL里面提供的函数的时候,总是被生成正确的C函数在C#中的正确声明而困扰,而生成C++中结构体在C#中的声明 - 天,没 ...

  2. 红帽虚拟化RHEV-架构简介

    目录 目录 软件环境 RHEV简介 RHEV与KVM的区别 RHEV的组成 RHEV-MManager RHEV-HHypervisor 虚拟机管理程序 存储 RHEV的架构 LDAPIPAAD We ...

  3. mysql 批量删表

    Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_name LIKE ...

  4. 阶段3 1.Mybatis_11.Mybatis的缓存_1 今日课程安排

  5. JavaScript —— 实现简单计算器【带有 开/关机 清零 退格 功能】

    <!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...

  6. 【ABAP系列】SAP ABAP DYNP_VALUES_UPDATE 更新屏幕字段的函数及用法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP DYNP_VA ...

  7. shoi 魔法树

    Harry Potter新学了一种魔法:可以改变树上的果子个数.满心欢喜的他找到了一个巨大的果树,来试验他的新法术.这棵果树共有N个节点,其中节点0是根节点,每个节点u的父亲记为fa[u],保证有fa ...

  8. 深度学习之美(张玉宏)——第四章 人生苦短我用python

    1 函数参数 (1)收集参数:以一个星号*加上形参名的方式,表示这个函数的实参个数不定,可能0个可能n个. def varParaFun(name,*param): print('位置参数是:',na ...

  9. 【Linux 源码】Linux源码比较重要的目录

    (1)arch arch是architecture的缩写.内核所支持的每一种CPU体系,该目录下都有对应的子目录. 每个CPU的子目录,又进一步分解为boot.mm.kernel等子目录,分别包含控制 ...

  10. [19/10/16-星期四] Python中的文件操作

    一.打开文件 # open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, ...