如何用纯 CSS 创作一个菜单反色填充特效

简介: 效果预览在线演示按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。https://codepen.io/comehope/pen/qYMoPo可交互视频教程此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

img_3a104f2fadb0a0ce45e6bdc461531325.png

效果预览

在线演示

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。
https://codepen.io/comehope/pen/qYMoPo


可交互视频教程


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


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


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


源代码下载


本地下载

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


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


代码解读


定义 dom,用 <nav> 定义导航栏,但 <li> 中要包含一个 <span>:

&lt;nav&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;span&gt;Home&lt;/span&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/nav&gt;

居中显示:

html, body {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(to right bottom, gold, chocolate);
}

设置文本样式:

nav ul {
    padding: 0;
}

nav ul li {
    font-size: 40px;
    font-family: sans-serif;
    list-style-type: none;
    background-color: white;
    border: 2px solid black;
    letter-spacing: 0.1em;
}

为容器设置宽高,此处定义的变量 x 和 y 后面还会用到:

:root {
    --x: 5em;
    --y: 1.5em;
}

nav ul li {
    width: var(--x);
    height: var(--y);
    line-height: var(--y);
}

用伪元素画出一个小球,放到菜单项左端:

nav ul li {
    position: relative;
}

nav ul li::before {
    content: '';
    position: absolute;
    height: var(--y);
    width: var(--y);
    background-color: black;
    border-radius: 50%;
    top: 0;
    left: calc(-1 * var(--y) / 2);
}

用 mix-blend-mode 设置色彩混合模式,使小球覆盖的文字反色显示:

nav ul li span {
    color: white;
    mix-blend-mode: difference;
}

增加动画,使小球从左侧滚到右侧:

nav ul li {
    overflow: hidden;
}

nav ul li::before {
    transition: 0.5s ease-out;
}

nav ul li:hover::before {
    --r: calc(var(--x) * 1.2);
    height: var(--r);
    width: var(--r);
    top: calc(-1 * var(--r) / 2 + var(--y) / 2);
    left: calc(-1 * var(--r) / 2 + var(--x) / 2);
}

在 dom 中添加更多的菜单项:

&lt;nav&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;span&gt;Home&lt;/span&gt;&lt;/li&gt;
        &lt;li&gt;&lt;span&gt;Products&lt;/span&gt;&lt;/li&gt;
        &lt;li&gt;&lt;span&gt;Services&lt;/span&gt;&lt;/li&gt;
        &lt;li&gt;&lt;span&gt;Contact&lt;/span&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/nav&gt;

最后,设置一下菜单项之间的间距:

nav ul li {
    margin: 0.5em;
}

大功告成!

知识点

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

相关文章
|
2月前
|
前端开发
基于CSS3+Bootstrap实现的侧边栏后台菜单源码
CSS3+Bootstrap实现的侧边栏后台菜单特效源码是一段基于Bootstrap和图标库制作的侧边栏菜单后台管理页面效果代码,简洁大方、易于管理,是一段非常不错的后台菜单栏效果,欢迎对此段代码感兴趣的朋友前来下载。
99 54
|
21天前
|
JavaScript 前端开发
jQuery和CSS3滑动展开菜单按钮插件
这是一款jQuery和CSS3滑动展开菜单按钮插件。该滑动展开菜单按钮在用户点击主菜单按钮之后,子菜单以滑动的方式依次展开
59 21
|
5月前
|
前端开发
导航新风尚:CSS梯形设计,让网站菜单不再单调!
导航新风尚:CSS梯形设计,让网站菜单不再单调!
|
8月前
|
前端开发
CSS padding(填充)
CSS padding(填充)。
66 1
|
前端开发
HTML+CSS实现菜单的3D翻转特效
HTML+CSS实现菜单的3D翻转特效
|
JavaScript 前端开发
CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
972 2
CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
|
前端开发
CSS 等距菜单悬停效果
纯HTML和CSS实现立体等距菜单悬停,动态效果由CSS实现
|
前端开发
CSS特效集锦(9款 , 总有一款是你喜欢的)
主要是: 穿越时空特效, 图片放大镜, 3D相册, 立方体相册, 昼夜更替特效, 飘雪, 七彩雨, 签名生成器, 水波纹动画等
CSS特效集锦(9款 , 总有一款是你喜欢的)
|
前端开发
HTML+CSS+JS实现卡通人物C罗ui特效
2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足球赛。除此之外,卡塔尔世界杯还是首次在北半球冬季举行、首次由从未进过世界杯决赛圈的国家举办的世界杯足球赛
HTML+CSS+JS实现卡通人物C罗ui特效

热门文章

最新文章