效果预览

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

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;
}

大功告成!

知识点

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. 前端每日实战:94# 视频演示如何用纯 CSS 创作一台拍立得照相机

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

  8. 前端每日实战:92# 视频演示如何用纯 CSS 创作一颗逼真的土星

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

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

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

随机推荐

  1. UML 类图快速入门

    UML 图形 官方定义 UML 类图(Class Diagram) UML 时序图(Sequence Diagram) 领域 UML 类图和实现 UML 类图 领域 UML 类图 实现 UML 类图 ...

  2. org.w3c.dom。 XML解析 练习

    HTML文档 1 import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; ...

  3. Parameter Initializations in Deep Learning

    全零初始化的问题: 在Linear Regression中,常用的参数初始化方式是全零,因为在做Gradient Descent的时候,各个参数会在输入的各个分量维度上各自更新.更新公式为: 而在Ne ...

  4. Python 学习笔记19 安装robot Framework

    因为项目组要做自动化测试,本人其实很希望能够使用 MStest + unit + C#来实现. 毕竟产品是基于.net 环境,并且使用C#环境开发的,适用性比较好,一些开发代码可以复用. 但是领导基于 ...

  5. python学习三十七天函数的作用域查找顺序LEGB

    python函数的作用域查找顺序LEGB,分别为 locals  eclosing  globals  builtins .了解作用域的范围,可以更好的操作你想要的业务,分别介绍一下. 1,local ...

  6. Linux grep常用命令

    在一个文件中同时查找多个字符串: 并集语法: grep -e 'pattern1 -e 'pattern2 file 或集语法: 1.grep -E 'pattern1|pattern2' file ...

  7. JS-01 书写规范

    此部分内容整理自私教指导和自我体会:(持续更新...) 1.运算符左右两边留空格 (webstorm快捷键ctrl+alt+l): 2.判断值是否相等尽量用“===” 严格等于 : 3.编程中,可有可 ...

  8. 毕设问题(1)表格table的表头自定义、复合表头,组合表格

    毕业设计,是一个web项目,遇到的些问题,记录下来.也许也有同样只知道一些,不是那么系统的学过的人,会遇到同样的问题,希望有所帮助. 百度知道有这样一个问题: bootstrap table 如何实现 ...

  9. 亲测可用的golang sql例程与包管理

    sqlite与golang package main import ( "database/sql" "fmt" "time" _ &quo ...

  10. 在项目中使用 Maven 私服

    #在项目中使用 Maven 私服 在 Maven settings.xml 中添加 Nexus 认证信息(servers 节点下): <server> <id>nexus-re ...