效果预览

在线演示

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

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. 44.纯 CSS 创作背景色块变换的按钮特效

    原文地址:https://segmentfault.com/a/1190000015192218 感想: 伪元素作为背景变化. HTML code: <nav> <ul> &l ...

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

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

  3. 前端每日实战:4# 视频演示如何用纯 CSS 创作一个金属光泽 3D 按钮特效

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

  4. 如何用纯 CSS 创作气泡填色的按钮特效

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

  5. 前端每日实战:72# 视频演示如何用纯 CSS 创作气泡填色的按钮特效

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

  6. 如何用纯 CSS 创作牛奶文字变换效果

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

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

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

  8. 如何用纯 CSS 创作一个容器厚条纹边框特效

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

  9. 如何用纯 CSS 创作一种侧立图书的特效

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

随机推荐

  1. hibernate下载

  2. hibernate错误总结1

  3. PostgreSQL - 怎么将时间转换成秒

    保留原来的毫秒值 select extract(epoch from '03:21:06.678'::time); 这个extract(epoch from )函数得到的是时间是秒单位,如果需要毫秒值 ...

  4. jvm 字节码查看

    javap -c -v HelloWorldDemo.class >HelloWorld.txt

  5. rtos概要

    一 RTOS如何调试: 静态调试帮不上忙,因为嵌入式系统都是动态系统 ,要借助基于RTOS系统的可视化分析 :Micriµm 的 µC/Probe ,SEGGER 的 SystemView ,Perc ...

  6. mysql查询某个数据库某个表的字段

    1.查看字段详细信息 -- 查看详细信息 SELECT COLUMN_NAME "字段名称", COLUMN_TYPE "字段类型长度", IF(EXTRA=& ...

  7. Java方式配置Spring MVC

    概述 使用Java方式配置Spring MVC,以及回顾一下Spring MVC的各种用法. Spring MVC简述 关于Spring MVC的介绍网上有很多,这里就不再赘述了,只是要说一下,Spr ...

  8. 【踩坑】Safari不兼容webpack封装的vue项目

    刚完成 Iblog 博客项目,在 chrome 浏览器调试完后,用 Safari 打开网站,页面一直停留在加载状态. 后来网上说这是 Safari 不支持 ES6 所致. 经过搜索,在 github ...

  9. JVM垃圾回收机制二

    对象的回收 垃圾的回收涉及的几个问题:何时回收,由谁回收,怎样回收.这几个问题我们一一来解决. 1.何时回收----对象的生死判定 对象达到什么条件才能判断这个对象已经无用了.常见的判断对象生死的方法 ...

  10. mongodb 文本索引

    启用文本搜索: 最初文本搜索是一个实验性功能,但2.6版本开始,配置是默认启用的.但是,如果使用的是以前 MongoDB 的版本,那么必须启用文本搜索,使用下面的代码: >db.adminCom ...