效果预览

在线演示

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

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

可交互视频教程

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

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

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

源代码下载

本地下载

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

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

代码解读

定义 dom,标准导航结构下,<li> 中的每个字母用 <span> 包裹:

&lt;nav&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;u&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;s&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: linear-gradient(to right bottom, dimgray, black);
}

定义文字样式:

ul {padding: 0;
}li {list-style-type: none;
}li span {color: white;font-size: 50px;font-family: monospace;text-transform: uppercase;letter-spacing: 0.1em;
}

当鼠标悬停时,用伪元素绘制倾斜的背景色块:

li span {position: relative;transition: 500ms;
}li:hover span {color: #333;
}li span::before {content: '';position: absolute;height: 100%;width: 0;z-index: -1;transition: 500ms;
}li:hover span::before {width: 70%;transform: rotate(-25deg);background: white;
}

设置缓动延时,增加动画效果:

li:hover span {transition-delay: calc(80ms * var(--n) + 10ms);
}li:hover span::before {transition-delay: calc(80ms * var(--n));
}li span:nth-child(1) {--n: 1;
}li span:nth-child(2) {--n: 2;
}li span:nth-child(3) {--n: 3;
}li span:nth-child(4) {--n: 4;
}li span:nth-child(5) {--n: 5;
}li span:nth-child(6) {--n: 6;
}li span:nth-child(7) {--n: 7;
}li span:nth-child(8) {--n: 8;
}

在单词左侧增加一条鼠标悬停时变亮的竖线:

li {padding-left: 2em;border: 2px solid transparent;border-left-color: silver;transition: 500ms;
}li:hover {border-left-color: white;
}

dom 中增加几个按钮,形成一组按钮:

&lt;nav&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;h&lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;m&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;p&lt;/span&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;d&lt;/span&gt;&lt;span&gt;u&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;v&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;a&lt;/span&gt;&lt;span&gt;c&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;/nav&gt;

最后,文字居中对齐,再调整一下按钮间距:

li {text-align: center;margin: 1em 0;
}

大功告成!

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

如何用纯 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/eKqZjy 可交互视频 ...

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

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

  5. 前端每日实战:33# 视频演示如何用纯 CSS 创作牛奶文字变换效果

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

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

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

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

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

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

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

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

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

最新文章

  1. Js中的style,currentStyle,getComputedStyle()区别
  2. linux_Nginx日志
  3. 《图说VR入门》——DeepoonVR的大鹏(陀螺仪)枪
  4. Git使用技巧(3)-- 远程操作
  5. Sticks UVA - 307(切木棍 线性区间dp,线性dp,区间思想。)
  6. 鼠标移入通过时间控制实现两个不同步的动画效果
  7. 从零基础入门Tensorflow2.0 ----二、4.3 wide deep 模型(多输入)
  8. 【TDA4系列】硬件分析与刷写程序的几种方式
  9. 开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
  10. ps怎么加底部阴影_PS给物体底部加阴影
  11. 排序算法——侏儒排序(Gnome sort)【代码实现】
  12. 3D立体相册,一个可旋转的立体相册
  13. 学习笔记(01):【吴刚】PS软件基础实用技巧标准视频教程-04-文件的打开及注意事项...
  14. dijkstra算法为什么不能计算负权重?
  15. Objective-C学习资源
  16. 架构衍变过程----58同城沈剑:好的架构源于不停地衍变,而非设计
  17. 计算机网络管理员初级是几级,计算机网络管理员初级试卷.pdf
  18. 职称申报评审管理系统_《四川省职称评审管理暂行办法》出台
  19. 光谱特征选择---竞争自适应重加权采样CARS
  20. 【网络技术】win8和8.1如何离线装 NET Framework 3.5

热门文章

  1. 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层
  2. NSIS学习笔记(转)
  3. mysql 表 组织 管理_MySQL 基础知识梳理学习(二)----记录在页面层级的组织管理...
  4. 若依框架集成redis缓存
  5. LookupError: unknown encoding: utf-8
  6. 使用hbase时常见问题解决方法
  7. php cms 选择哪个好?
  8. dqn在训练过程中loss越来越大_深度强化学习——从DQN到DDPG
  9. php 重定向 post,使用Jquery post时PHP不会重定向
  10. 使用pyinstaller把pyton文件打包成exe文件