前端小案例——动态导航栏文字(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

谢谢各位的支持~~

相关推荐
无限大.5 小时前
前端知识速记:节流与防抖
前端
十八朵郁金香5 小时前
【VUE案例练习】前端vue2+element-ui,后端nodo+express实现‘‘文件上传/删除‘‘功能
前端·javascript·vue.js
学问小小谢5 小时前
第26节课:内容安全策略(CSP)—构建安全网页的防御盾
运维·服务器·前端·网络·学习·安全
LCG元6 小时前
Vue.js组件开发-实现全屏图片文字缩放切换特效
前端·javascript·vue.js
还是鼠鼠7 小时前
图书管理系统 Axios 源码__新增图书
前端·javascript·vscode·ajax·前端框架·node.js·bootstrap
还是鼠鼠10 小时前
图书管理系统 Axios 源码 __删除图书功能
前端·javascript·vscode·ajax·前端框架·node.js·bootstrap
轻口味10 小时前
Vue.js `Suspense` 和异步组件加载
前端·javascript·vue.js
m0_zj11 小时前
8.[前端开发-CSS]Day08-图形-字体-字体图标-元素定位
前端·css
还是鼠鼠12 小时前
图书管理系统 Axios 源码__编辑图书
前端·javascript·vscode·ajax·前端框架
北极象12 小时前
vue3中el-input无法获得焦点的问题
前端·javascript·vue.js