使用jQuery实现动态下划线效果的导航栏

在现代网页设计中,动态效果是提升用户体验的重要手段之一。今天,我们将通过一个简单的例子,展示如何使用jQuery实现一个带有动态下划线效果的导航栏。这个效果在用户点击不同的导航标签时,下划线会平滑地移动到当前选中的标签下方,并且标签的样式也会随之改变

首先,我们需要一个基本的HTML结构来创建导航栏。假设我们有四个导航标签,每个标签都有一个共同的类名item,并且我们还需要一个div元素来作为下划线。

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态下划线导航栏</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="nav">
        <div class="item">首页</div>
        <div class="item">关于我们</div>
        <div class="item">服务</div>
        <div class="item">联系我们</div>
        <div id="underline"></div>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="script.js"></script>
</body>
</html>

接下来,我们需要为导航栏和下划线添加一些基本的样式。我们将使用CSS来设置导航标签的布局、颜色以及下划线的初始样式。

css 复制代码
/* styles.css */
body {
    font-family: Arial, sans-serif;
}

.nav {
    position: relative;
    display: flex;
    justify-content: space-around;
    padding: 10px 0;
    background-color: #f8f8f8;
    border-bottom: 1px solid #ddd;
}

.item {
    padding: 10px 20px;
    cursor: pointer;
    color: #333;
    transition: color 0.3s ease;
}

.item.heightLight {
    color: #007bff;
}

#underline {
    position: absolute;
    bottom: 0;
    left: 0;
    height: 2px;
    background-color: #007bff;
    transition: all 0.3s ease;
}

最后,我们使用jQuery来实现动态下划线效果。我们将通过以下步骤来实现:

  1. 获取所有导航标签和下划线元素 :使用jQuery选择器获取所有带有类名item的元素和下划线元素。

  2. 设置下划线位置 :定义一个函数setUnderlinePosition,该函数会根据传入的索引值,计算当前选中标签的宽度和左侧位置,并将下划线的宽度和位置设置为相应的值。

  3. 添加点击事件 :为每个导航标签添加点击事件,当用户点击某个标签时,调用setUnderlinePosition函数,并将下划线移动到该标签下方。

  4. 初始化:在页面加载时,默认选中第一个标签并设置下划线的初始位置。

    javascript 复制代码
    // script.js
    $(document).ready(function () {
        var items = $('.item');
        var underline = $('#underline');
    
        // 设置underline位置
        function setUnderlinePosition(index) {
            var activeItem = $(items[index]);
            var itemWidth = activeItem.outerWidth(); // 获取标签宽度
            var itemLeft = activeItem.position().left; // 获取标签左侧位置
    
            // 设置underline的宽度和位置
            underline.css({
                'width': itemWidth + 'px',
                'left': itemLeft + 'px'
            });
    
            // 高亮当前选中的标签
            items.removeClass('heightLight');
            activeItem.addClass('heightLight');
        }
    
        // 给每个标签添加点击事件
        items.on('click', function () {
            var index = items.index(this);
            setUnderlinePosition(index);
        });
    
        // 页面加载时,默认选中第一个标签并设置underline位置
        setUnderlinePosition(0); // 初始化时选中第一个标签
    });
相关推荐
ObjectX前端实验室7 分钟前
从零到一:系统化掌握大模型应用开发【目录】
前端·llm·agent
guoyp212614 分钟前
前端实验(二)模板语法
前端·vue.js
葡萄城技术团队19 分钟前
Excel 转在线协作难题破解:SpreadJS 纯前端表格控件的技术方案与实践
前端·excel
我的xiaodoujiao19 分钟前
Windows系统Web UI自动化测试学习系列3--浏览器驱动下载使用
前端·windows·测试工具·ui
一只小风华~22 分钟前
学习笔记:Vue Router 中的嵌套路由详解[特殊字符]概述
前端·javascript·vue.js
泻水置平地22 分钟前
若依前后端分离版实现前端国际化步骤
前端
Villiam_AY24 分钟前
从后端到react框架
前端·react.js·前端框架
CodeCraft Studio27 分钟前
全球知名的Java Web开发平台Vaadin上线慧都网
java·开发语言·前端·vaadin·java开发框架·java全栈开发·java ui 框架
一只小风华~34 分钟前
Vue Router 命名路由学习笔记
前端·javascript·vue.js·笔记·学习·ecmascript
我是华为OD~HR~栗栗呀38 分钟前
前端面经-高级开发(华为od)
java·前端·后端·python·华为od·华为·面试