效果预览

在线演示

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

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

可交互视频教程

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

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

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

源代码下载

本地下载

请从 github 下载。

https://github.com/comehope/front-end-daily-challenges/tree/master/019-split-text-menu-effects

代码解读

定义 dom,一个列表中包含一个列表项,列表项有一个 data-text 属性:

<ul class="menu">
<li data-text="New Game">New Game</li>
</ul>

居中显示:

html,
body {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: black;
}

设置文本样式:

.menu {
padding: 0;
} .menu li {
list-style-type: none;
color: white;
font-size: 3em;
font-weight: bold;
text-transform: uppercase;
text-align: center;
line-height: 1em;
width: 7em;
}

画出文字的分割线:

.menu li {
border-top: 1px solid yellow;
}

隐藏文本:

.menu li {
color: transparent;
}

用伪元素增加文本:

.menu li {
position: relative;
} .menu li::before {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 100%;
color: silver;
}

把伪元素文本向上移,竖跨分割线:

.menu li::before,
.menu li::after {
top: -0.5em;
}

用遮罩切出分割线上下二部分的文本:

.menu li::before {
clip-path: polygon(0 0, 100% 0, 100% 50%, 0 50%);
} .menu li::after {
clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%);
}

dom 中再增加几个菜单项:

<ul class="menu">
<li data-text="New Game">New Game</li>
<li data-text="Load Game">Load Game</li>
<li data-text="Options">Options</li>
<li data-text="Exit">Exit</li>
</ul> .menu li {
margin: 0.5em;
}

为分割线增加动画效果:

.menu li {
border-top: 1px solid transparent;
transition: 0.3s;
} .menu li:hover {
border-top: 1px solid yellow;
}

为文字增加动画效果:

.menu li::before,
.menu li::after {
transition: 0.3s ease-out;
} .menu li:hover::before,
.menu li:hover::after {
color: yellow;
transition: left 0.3s ease-out;
transition-delay: 0.2s;
} .menu li:nth-child(odd):hover::before,
.menu li:nth-child(even):hover::after {
left: -0.15em;
} .menu li:nth-child(even):hover::before,
.menu li:nth-child(odd):hover::after {
left: 0.15em;
}

大功告成!

知识点

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

如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效的更多相关文章

  1. 前端每日实战:19# 视频演示如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效

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

  2. 19.纯 CSS 创作一种有削铁如泥感觉的菜单导航特效

    原文地址:https://segmentfault.com/a/1190000014836748 感想: 把原元素隐藏,利用伪元素::before 和 ::after 各取上下一半 clip-path ...

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

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

  4. 如何用纯 CSS 创作一种文字断开的交互特效

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

  5. 如何用纯 CSS 创作一种按钮被瞄准的交互特效

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

  6. 前端每日实战:12# 视频演示如何用纯 CSS 创作一种文字断开的交互特效

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

  7. 前端每日实战:14# 视频演示如何用纯 CSS 创作一种侧立图书的特效

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

  8. 14.纯 CSS 创作一种侧立图书的特效

    原文地址:https://segmentfault.com/a/1190000014751037 HTML代码: <div class="books"> <div ...

  9. 12纯 CSS 创作一种文字断开的交互特效

    原文地址:https://segmentfault.com/a/1190000014719591 总结:三部分组成,原文透明,左右都与原文重叠(绝对定位),但左右各取相应一部分. HTML代码: &l ...

随机推荐

  1. 树的直径初探+Luogu P3629 [APIO2010]巡逻【树的直径】By cellur925

    题目传送门 我们先来介绍一个概念:树的直径. 树的直径:树中最远的两个节点间的距离.(树的最长链)树的直径有两种方法,都是$O(N)$. 第一种:两遍bfs/dfs(这里写的是两遍bfs) 从任意一个 ...

  2. 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof

    题目传送门 /* 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 ans = min (ans, max (dp[x][y-i], dp[x-1][i-1]) + ...

  3. 看Facebook是如何优化React Native性能

    原文出处: facebook   译文出处:@Siva海浪高 该文章翻译自Facebook官方博客,传送门 React Native 允许我们运用 React 和 Relay 提供的声明式的编程模型, ...

  4. solr 包地址

    http://archive.apache.org/dist/lucene/solr/6.3.0/

  5. 极其强大的运维工具——pscp、pssh、pslurp

    1.pscp 用于将本地文件复制到远程主机 pscp -h xxx.host 本地文件 远程目录 //xxx.host是所有目的IP的文件,一个IP一行 2.pssh 在远程机器上执行命令 pssh ...

  6. [转].NET MVC 分页以及增删查改

    本文转自:http://blog.csdn.net/sust2012/article/details/30761867 . 数据库操作,DAL 层: using System; using Syste ...

  7. P2006 赵神牛的游戏

    题目描述 在DNF 中,赵神牛有一个缔造者,他一共有k点法力值,一共有m个技能,每个技能耗费的法力值为a[i],可以造成的伤害为b[i],而boss 的体力值为n,请你求出它放哪个技能,才可以打死bo ...

  8. 初学.net增删改查

    分页显示 DAL: public List GetListByPager(int PageIndex, int PageSize, out int RowCount) { string sql = & ...

  9. Spring Boot整合Spring Batch

    引言 Spring Batch是处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定的处理后输出指定的形式.比如我们可以将csv文件中的数据(数据量几百万甚至几千万都是没问题的)批处理插入保 ...

  10. checkbox:click事件触发span元素内容改变

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...