讲师中心 微信公众号
AI工具推荐 视频效率加速

响应式导航高亮滚动效果:仅在屏幕宽度大于750px时启用

星杰君_9066

星杰君_9066

发布时间:2026-02-08 11:12:20

|

811人浏览过

|

来源于php中文网

原创

响应式导航高亮滚动效果:仅在屏幕宽度大于750px时启用

本文介绍如何为bootstrap导航栏的动态高亮条添加响应式控制,确保滑动高亮动画仅在桌面端(屏幕宽度 > 750px)生效,并在窗口缩放时实时启停,避免移动端误触发。

要实现导航菜单高亮条的“仅在大屏启用滚动定位功能”,关键在于动态监听视口宽度变化,而非仅在页面加载时做一次判断。原代码中使用 $(document).width() 在 $(document).ready() 中静态检测,导致窗口缩放后状态无法同步——这是典型的响应式交互遗漏。

✅ 正确做法:用 window.innerWidth + resize 实时判断

window.innerWidth 返回当前视口的像素宽度(含滚动条),比 jQuery 的 $(document).width() 更准确、无依赖,且原生性能更优。我们应将核心逻辑封装为可开关的函数,并在初始化和每次 resize 时重新校验条件:

CDP浏览器大师
CDP浏览器大师

CDP浏览器大师:通过Chrome DevTools Protocol驱动已登录浏览器实现自动化任务,解决反爬封号、选择器失效、SPA路由难导航、固定sleep不准四大痛点。核心能力包括UA伪装、WebGL/Canvas指纹混淆、智能等待、动态选择器以及可视化调试。

下载
$(document).ready(function() {
  let isDesktop = window.innerWidth > 750;
  let highlightActive = false;

  // 核心高亮更新函数(带条件执行)
  function updateActiveHighlight(init = false, skipTransition = false) {
    if (!isDesktop) return; // ❗ 非桌面端直接退出,不执行任何DOM操作

    const navTabs = $('.nav-tabs');
    const activeTab = navTabs.find('.active > a'); // 注意:.active 在 <a> 上,非 <li>

    if (activeTab.length === 0) return;

    const navOffset = navTabs.offset();
    const tabOffset = activeTab.offset();

    const pos = {
      x: tabOffset.left - navOffset.left,
      y: tabOffset.top - navOffset.top,
      w: activeTab.outerWidth(),
      h: activeTab.outerHeight()
    };

    let highlight = navTabs.find('.active-highlight');
    if (init && highlight.length === 0) {
      navTabs.prepend('<li class="active-highlight"></li>');
      highlight = navTabs.find('.active-highlight');
    }

    if (skipTransition) {
      highlight.css('transition', 'none');
      setTimeout(() => highlight.css('transition', 'all .5s ease'), 10);
    }

    highlight.css({
      width: pos.w,
      height: pos.h,
      left: pos.x,
      top: pos.y
    });
  }

  // 初始化(仅桌面)
  if (isDesktop) {
    updateActiveHighlight(true);
  }

  // 监听窗口缩放:动态切换状态 & 更新高亮
  $(window).on('resize', function() {
    const newIsDesktop = window.innerWidth > 750;

    if (newIsDesktop !== isDesktop) {
      isDesktop = newIsDesktop;

      if (isDesktop) {
        // 切回桌面:立即初始化或恢复高亮
        updateActiveHighlight(true);
      } else {
        // 切入移动端:移除高亮元素(可选,提升语义清晰度)
        $('.nav-tabs .active-highlight').remove();
      }
    } else if (isDesktop) {
      // 仍在桌面区间:仅更新位置(如tab切换后缩放需重算)
      updateActiveHighlight(false, true);
    }
  });

  // Tab切换时更新(仅桌面生效)
  $('[data-bs-toggle="tab"]').on('shown.bs.tab', function() {
    if (isDesktop) {
      updateActiveHighlight();
    }
  });
});

⚠️ 注意事项与优化点

✅ 最终效果

  • 屏幕 ≥ 751px:高亮条平滑跟随激活 Tab 滑动,支持 Tab 切换与窗口缩放自适应;
  • 屏幕 ≤ 750px:完全静默,无高亮元素、无事件绑定、零性能开销;
  • 任意尺寸切换(拖拽浏览器边框):无需刷新,即时响应,行为一致可靠。

通过将响应式逻辑深度融入生命周期(初始化 → resize 监听 → 状态同步 → 条件执行),即可优雅解决“仅大屏启用”的需求,兼顾健壮性与可维护性。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

621

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

1236

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2322

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

2168

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

513

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

337

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

886

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

309

2026.01.13

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn