前端小案例——动态导航栏文字(HTML + CSS, 附源码)

一、前言

实现功能:

这案例是一个具有动态效果的导航栏。导航栏的样式设置了一个灰色的背景,并使用flex布局在水平方向上平均分配了四个选项。每个选项都是一个li元素,包含一个文本和一个横向的下划线。

当鼠标悬停在选项上时,选项的文本颜色会变为粉红色,并且下划线会从中间向两边展开,呈现出一种动态的效果。

这种导航栏可以用于网页或应用程序中,提供简洁且有吸引力的导航选项。

实现逻辑:

  1. 创建一个导航栏容器div,并设置其类名设置为.nav。
  2. 在导航栏容器中创建四个选项,即li元素,每个选项包含一个文本和一个下划线。
  3. 为每个选项设置样式,包括设置宽度、高度、文本对齐方式、行高和相对定位。
  4. 为每个选项的下划线i元素设置样式,包括设置宽度为0%(初始状态下不可见)、高度为3px、背景色、绝对定位和过渡效果。
  5. 当鼠标悬停在选项上时,为选项设置:hover伪类样式,改变文本颜色为粉红色。
  6. 当鼠标悬停在选项上时,为选项下划线i元素设置:hover伪类样式,将下划线从中间向两边展开,即将left属性设置为0,将宽度设置为100%。
  7. 设置过渡效果,使下划线的展开效果具有动画效果。

二、项目运行效果

三、全部代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态导航栏文字</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            list-style: none;
        }
        .nav{
            display: flex;
            width: 500px;
            height: 100px;
            margin: 100px auto;
            justify-content: space-around;
            align-items: center;
            background-color: rgb(205, 223, 248);
            border-radius: 10px;
        }
        .nav li{
            position: relative;
            width: 100px;
            height: 50px;
            text-align: center;
            line-height: 50px;
            transition:.5s all;
            cursor: pointer;
        }
        .nav li i{
            display:block; 
            width: 0%;
            height: 3px;
            background-color: rgb(255, 0, 119);
            position: absolute;
            bottom: 0px;
            left: 50%;
            transition:.5s all;
        }
        .nav li:hover {
            color: rgb(255, 0, 119);
            letter-spacing: 4px;
        }
        .nav :hover i{
            left:0; 
            width:100%;
        }
    </style>
</head>
<body>
    <div class="nav">
        <li>1111<i></i></li>
        <li>2222<i></i></li>
        <li>3333<i></i></li>
        <li>4444<i></i></li>
    </div>
</body>
</html>

四、答疑解惑

这是一个非常适合前端入门练习的小案例,各位小伙伴可以自行更改样式和内容,如果大家运行时出现问题或代码有什么不懂的地方都可以随时评论留言或联系博主QQ。

还多请各位小伙伴多多点赞支持,你们的支持是我最大的动力。

博主QQ:1196094293

谢谢各位的支持~~

相关推荐
无糖可可果25 分钟前
从零读懂一个 Next.js 全栈笔记应用
前端
Maxkim25 分钟前
DeepSeek Harness 源码深度分析:像 VS Code 一样插件化的 Agent 框架
前端·架构
喜欢睡觉30 分钟前
从零看懂一个 Next.js 笔记应用
前端
cindershade32 分钟前
从零实现画布「双击创建节点」:一个 VueFlow 项目的交互全记录
前端
YHL32 分钟前
🚀 SSE 服务器发送事件与 BFF 层实战
前端·后端
今日无bug34 分钟前
HTML5 Canvas:从画图到游戏开发
前端·canvas
cindershade36 分钟前
用 Web Workers 优化前端重计算任务:避免主线程卡顿的实战方案
前端
爱丶不疚36 分钟前
搞不清 CommonJS 与 ESM,你是否也有这些疑问🤔
前端·node.js
YIAN41 分钟前
http无状态?State来展示!从基础路由到鉴权守卫,吃透 SPA 前端路由核心
前端·react.js
__zRainy__1 小时前
Node系列 · Node基础:全局变量与全局对象
开发语言·前端·javascript