如何实现响应式 jQuery Marquee:移动端初始化,桌面端销毁

如何实现响应式 jquery marquee:移动端初始化,桌面端销毁

本教程详细介绍了如何使用 jQuery.Marquee 插件实现响应式滚动效果,确保其在移动设备上初始化并在桌面设备上销毁。文章阐述了传统方法中可能遇到的问题,并提供了一种健壮的解决方案,利用 `window.matchMedia` 进行媒体查询以及 `data-*` 属性进行插件状态管理,从而避免重复初始化和销毁,优化性能并提升用户体验。

在现代网页设计中,响应式布局是不可或缺的一部分。对于一些特定的UI组件,如跑马灯(Marquee)效果,我们可能希望它们只在特定的屏幕尺寸下激活,例如在移动设备上启用,而在桌面设备上禁用。本教程将指导您如何使用 jQuery.Marquee 插件实现这一功能,并提供一个健壮的解决方案来避免常见的陷阱。

响应式 Marquee 的挑战

直接监听 window 的 resize 事件并根据当前窗口宽度来初始化或销毁 Marquee 插件,可能会导致一些问题:

重复初始化/销毁: 如果不跟踪插件的状态,每次窗口大小跨越阈值时,都可能尝试对一个已经初始化过的元素再次初始化,或者对一个未初始化的元素进行销毁操作,这可能导致插件崩溃或不按预期工作。性能问题: resize 事件会频繁触发。在每次事件中都进行复杂的DOM操作或插件初始化,会消耗大量资源,影响页面性能。不准确的宽度判断: 在 resize 事件中直接获取 $(window).width() 可能会在某些情况下不够精确,尤其是在处理浏览器缩放或设备像素比时。

解决方案:matchMedia 与状态管理

为了解决上述挑战,我们将采用以下两种核心技术:

window.matchMedia(): 这是一个现代浏览器API,用于执行媒体查询。它比反复查询 $(window).width() 更高效,因为它只在媒体查询状态发生变化时才通知我们。*`data-属性:** 我们将使用一个自定义的data-*属性(例如data-marqueeinit`)来跟踪 Marquee 插件是否已经在目标元素上初始化。这有助于防止重复操作。

实现步骤

1. 引入必要的库

首先,确保您的页面中已引入 jQuery 库和 jQuery.Marquee 插件。建议将它们放在

标签的末尾,或者使用 defer 属性加载脚本。

2. HTML 结构

为您的 Marquee 内容准备一个容器元素。这里我们使用一个带有 tt-services-listing 类的 div 元素作为示例。

这是您希望滚动的文本内容。它会根据屏幕宽度在移动端滚动,在桌面端停止。 Lorem ipsum dolor sit amet, consectetur adipiscing elit.

3. JavaScript 逻辑

核心逻辑将封装在一个函数中,该函数在页面加载时和窗口大小调整时被调用。

jQuery($ => { // 确保 DOM 加载完毕,并为 jQuery 提供 $ 别名  // Marquee 插件的配置选项  const marqueeOptions = {    duration: 20000, // 滚动持续时间(毫秒)    duplicated: true, // 是否复制内容以实现无缝滚动    delayBeforeStart: 0, // 开始前的延迟时间    startVisible: true, // 是否在开始时可见  };  // 目标 Marquee 元素  const $listings = $('.tt-services-listing');  // 使用 window.matchMedia 监听屏幕宽度小于 768px 的媒体查询  // m768.matches 会返回当前是否匹配该媒体查询  const m768 = matchMedia("(width  {    // 检查当前是否匹配移动端宽度 (width = 768px) 并且 Marquee 已经初始化    else if (!m768.matches && $listings.data("marqueeinit")) {      // 移除 data-marqueeinit 标志,表示已销毁      $listings.removeData("marqueeinit");      // 销毁 Marquee 插件      $listings.marquee("destroy");    }  };  // 监听窗口的 resize 事件,并在事件触发时调用 handleMarquee 函数  $(window).on("resize", handleMarquee);  // 页面加载时立即执行一次 handleMarquee,以根据初始屏幕宽度设置 Marquee 状态  handleMarquee();});

代码解析

jQuery($ => { … });: 这是一个常见的 jQuery 简写,确保在 DOM 完全加载后执行代码,并且 $符号在作用域内指向 jQuery。marqueeOptions: 定义了 Marquee 插件的配置参数,您可以根据需要进行调整。$listings: 缓存了 Marquee 目标元素的 jQuery 对象,避免重复查询。matchMedia(“(width : 创建一个 MediaQueryList 对象,用于监听 width handleMarquee() 函数:初始化条件: m768.matches 为 true(当前是移动端)且 !$listings.data(“marqueeinit”) 为 true(Marquee 尚未初始化)。满足这两个条件时,设置 data-marqueeinit 标志并初始化 Marquee。销毁条件: !m768.matches 为 true(当前是桌面端)且 $listings.data(“marqueeinit”) 为 true(Marquee 已经初始化)。满足这两个条件时,移除 data-marqueeinit 标志并销毁 Marquee。$(window).on(“resize”, handleMarquee);: 绑定 resize 事件监听器,每次窗口大小改变时都会调用 handleMarquee。handleMarquee();: 在脚本加载时立即调用一次 handleMarquee,以确保在页面首次加载时 Marquee 状态正确。

注意事项与最佳实践

媒体查询阈值: 示例中使用 768px 作为移动端和桌面端的分界线,您可以根据您的设计需求调整这个值。插件销毁: jquery.marquee 插件提供了 destroy 方法,这是一个很好的实践。不是所有 jQuery 插件都提供 destroy 方法,如果您的插件没有,您可能需要手动移除相关的类、样式或事件监听器。性能优化: 虽然 matchMedia 已经比直接查询窗口宽度更高效,但对于 resize 事件,通常建议使用 节流 (throttle)防抖 (debounce) 技术来限制 handleMarquee 函数的执行频率,进一步提升性能。例如,可以使用 Lodash 库中的 _.throttle() 方法。初始化顺序: 确保 jQuery 库和 Marquee 插件在您的脚本之前加载。离线测试: 在不同的设备和浏览器上测试您的实现,以确保其在各种条件下都能正常工作。

总结

通过结合 window.matchMedia 进行响应式媒体查询和 data-* 属性进行插件状态管理,我们可以优雅且高效地实现 jQuery.Marquee 插件在不同屏幕尺寸下的动态初始化和销毁。这种方法不仅解决了传统 resize 事件监听可能带来的性能和逻辑问题,也使得代码更加健壮和易于维护,为用户提供了更流畅、更符合预期的交互体验。

以上就是如何实现响应式 jQuery Marquee:移动端初始化,桌面端销毁的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1531130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
解决ExtJS Grid数据加载与显示:从API响应到最佳实践
上一篇 2025年12月20日 22:35:37
JavaScript中的模板字面量如何用于创建领域特定语言(DSL)?
下一篇 2025年12月20日 22:35:43

相关推荐

  • win10无法新建文件夹怎么办_win10新建文件夹失败解决方案

    1、修复注册表中缺失的New项,添加默认字符串值并重启;2、检查磁盘安全权限,确保用户拥有完全控制和写入权限;3、重启Windows资源管理器进程以恢复右键功能;4、运行sfc /scannow命令修复系统文件。 如果您在Windows 10桌面上尝试右键新建文件夹时,发现“新建”选项缺失或无法创建…

    2026年8月27日
    000
  • VSCode怎么用NodeJS联想_VSCode配置Node.js智能提示与自动补全功能教程

    VSCode在Node.js项目中实现智能提示的核心是通过jsconfig.json或tsconfig.json配置文件,结合@types类型定义和语言服务解析代码结构。正确设置module、target、baseUrl、paths等选项,并安装对应@types包,可显著提升代码联想准确性;对于无类…

    2026年8月27日
    100
  • win10笔记本没有无线网络连接的解决方法

    最近,一些使用win10系统的笔记本用户反馈称,在尝试搜索wifi时遇到了问题,发现windows移动中心内没有显示无线网络,且设备上完全找不到任何无线网络选项。这种情况通常是由系统中的某些服务被意外关闭所引起的。如果您也遇到了类似的问题,可以按照本文提供的步骤来尝试解决问题! 以下是修复win10…

    2026年8月27日
    000
  • DuckDuckGo浏览器官方入口 DuckDuckGo浏览器登录链接

    DuckDuckGo浏览器官方入口是https://duckduckgo.com/,该平台以隐私保护为核心,默认阻止广告跟踪器、提供加密连接、内置隐私评级系统并支持自动清除浏览数据;在搜索体验上,其不依赖用户画像,避免信息茧房,支持搜索框内计算、单位换算及多媒体预览,并提供!Bang命令直达特定网站…

    2026年8月27日
    100
  • 点淘优惠活动哪里多_点淘优惠活动哪里多才能买到最划算商品

    答案:通过直播间专享券、点淘领券中心、限时活动、88VIP权益及返利平台可系统获取高折扣。具体为:1. 直播间领取主播发放的限量大额券;2. 使用点淘“领券中心”聚合页面一键领取可叠加优惠;3. 参与“超级秒杀”等主题活动享跨店满减;4. 绑定88VIP获折上折与专属券;5. 借助高省、氧券等返利平…

    2026年8月27日
    000
  • 怎样用免费工具做教育PPT_免费教育PPT制作的详细方法

    1、使用AI生成平台如AiPPT,输入主题即可快速创建结构完整、视觉美观的课件,支持导出PPTX或PDF;2、利用WPS Office等办公套件的免费模板与智能配色功能,手动编辑并分享教学内容;3、通过亿图脑图MindMaster将思维导图一键转为PPT,确保逻辑清晰并增强课堂互动。 如果您需要为教…

    2026年8月27日
    000
  • Win8电脑烟雾头如何调的最清楚?

    Win8电脑烟雾头如何调的最清楚?Win8电脑烟雾头如何调的最清楚?Win8电脑烟雾头如何调的最清楚?Win8电脑烟雾头如何调的最清楚?

    CF是每个人都非常喜欢的游戏。在其中战斗时,它将使用烟雾弹。许多人必须调整烟头才能见到敌人。那么如何在Win8中最清晰地调节烟度呢? 其实很简单,让我教你如何调节Win8烟头。   方法 教程  1。右键单击桌面的空白区域以打开菜单,然后选择NVIDIA控制面板。如果没有,则可以在控制面板中找到它。…

    2026年8月27日 用户投稿
    000
  • 小米路由器192.168.31.1.miwifi.com密码设置

    答案是通过192.168.31.1或miwifi.com进入小米路由器管理界面,分别在无线设置和系统管理中修改Wi-Fi密码和管理密码;若忘记管理密码,可长按Reset键重置路由器恢复出厂设置,之后重新配置网络;需区分Wi-Fi密码用于设备联网,管理密码用于后台设置,两者均应设置高强度且不同的密码以…

    2026年8月27日
    000
  • TXT小说阅读时卡顿怎么解决_TXT小说阅读器卡顿优化设置方法

    先从阅读器设置优化,再处理大文件和设备资源。关闭拼写检查、动画效果,改为手动计算模式;将大TXT分割或转为EPUB格式;关闭后台程序、清理存储、重启设备以释放资源。 读TXT小说时卡顿,多半是软件处理大文件或设备资源不足导致的。关键在于减轻阅读器的负担,让系统能流畅运行。下面这些方法,从设置到操作都…

    2026年8月27日
    000
  • Windows安装Perl简易教程

    Windows安装Perl简易教程Windows安装Perl简易教程Windows安装Perl简易教程Windows安装Perl简易教程

    请向下查看以获取 perl 下载信息。 1、 打开浏览器,在地址栏中输入 https://www.php.cn/link/5708bc08150358bcab702024df5a1e0d Perl 的下载。 2、 下载完成后,双击 perl.exe 安装文件开始运行。 3、 点击“下一步”继续安装流…

    2026年8月27日 用户投稿
    000
  • Win11卸载更新在哪?Win11卸载更新的两种方法

    大家是否在使用Win11时遇到更新后系统出现问题的情况,想要卸载更新却无从下手呢?别着急,接下来就给大家介绍两种简单有效的方法,帮助你快速恢复系统到更新之前的状态。 一、准备工作: 无需额外下载工具,只需一台运行Win11系统的电脑即可。 二、操作步骤: 方法一:利用系统设置界面进行更新回滚。进入W…

    2026年8月27日
    000
  • Win10系统设置随机无线网卡MAC地址的方法

    许多运行windows 10系统的电脑用户,在配置无线网络时,可能会遇到需要调整电脑无线网卡mac地址的情况才能正常使用。那么,如何在windows系统中设置无线网卡的mac地址呢?接下来,就为大家介绍一种在win10系统中设置随机无线网卡mac地址的方法吧。 Win10系统 具体步骤如下: 打开设…

    2026年8月27日
    100
  • 避免命令行输出被其他线程打印信息中断

    本文旨在解决多线程环境下,命令行交互过程中,其他线程的输出信息干扰用户输入的问题。文章将阐述为何无法完全阻止此类中断,并提供几种可行的解决方案,包括重定向输出、使用命名管道以及利用 curses 库进行多线程控制台程序设计。 在多线程 Java 程序中,当一个线程(例如主线程)通过 Scanner.…

    2026年8月27日
    000
  • 抖音电商在哪里设置受限地区?抖音电商商家版

    随着抖音电商的迅速发展,越来越多的商家和内容创作者加入其中,拓展自己的销售渠道。但你是否知道?在抖音电商中,商家是可以自主设置商品销售的受限地区的!通过这一功能,能够有效管理发货范围、规避区域政策风险,并提升运营效率。那么,抖音电商的受限地区究竟在哪里设置?接下来,就为你全面解析操作流程和相关要点。…

    2026年8月27日
    000
  • Win10 强势反弹:霸占七成 Windows 市场份额

    statcounter 的统计数据显示,windows 11 的市场占有率正在逐步下降,到了今年4月份,其份额已经跌破了26%。与此同时,windows 10 显示出回升迹象,增加了0.96个百分点,达到了70.03%,这也是自2023年9月以来首次重返70%以上。不少用户表示,他们更倾向于选择 w…

    2026年8月27日
    000
  • qq浏览器怎么批量删除重复的收藏夹_QQ浏览器重复收藏夹批量清理技巧

    首先使用QQ浏览器内置整理功能可快速批量删除重复书签,进入收藏夹后点击整理选项,系统自动扫描并允许勾选删除重复项;若重复较多,建议导出收藏夹为HTML文件,通过电脑端Excel或文本工具提取网址并删除重复内容,再重新导入;还可借助第三方书签管理工具如Raindrop.io导入数据,利用其智能识别功能…

    2026年8月27日
    100
  • Win10图标小盾牌如何去掉?Win10图标小盾牌去掉方法教程分享

    win10图标小盾牌如何移除?不少用户在操作windows系统时会发现某些程序图标上会出现小盾牌标志,对此感到疑惑,想知道如何将其清除。那么win10图标小盾牌怎么移除呢?以下是移除win10图标小盾牌的具体步骤,希望能为大家提供帮助。 移除Win10图标小盾牌的操作指南 1、按下键盘上的“Win键…

    2026年8月27日
    000
  • Win7回收站删除的文件可以找回吗?Win7恢复删除文件方法教学

    一、准备工具: 若想找回Win7系统中回收站删除的文件,需准备好一台电脑、一个可用的U盘以及足够的耐心。这些设备将为我们的文件恢复提供支持。 二、操作步骤: 首先,把U盘连接到电脑上,然后下载一款专业的数据恢复软件,例如Recuva。安装完成后打开该软件,并依照指引进行设置,挑选想要恢复的文件格式及…

    2026年8月27日
    000
  • 抖店尺码怎么设置?抖店怎么设置商品规格

    随着抖音电商平台的持续壮大,越来越多商家选择入驻抖店,借助这一流量高地实现销量突破。而在日常运营中,商品尺码的设置显得尤为关键。科学合理的尺码配置不仅能有效提升下单转化率,还能大幅降低因尺码不符引发的退货率,增强用户购物体验。那么,抖店究竟该如何设置尺码?本文将系统介绍抖店尺码设置的具体步骤与实用技…

    2026年8月27日
    500
  • 登录、注销与记住我功能的实现

    登录、注销与记住我功能在web应用中的实现主要通过会话管理和持久化存储。1. 登录功能通过用户认证并存储用户名在会话中实现。2. 记住我功能通过设置会话为持久化并使用安全的cookie实现。3. 注销功能通过移除会话中的用户名并重定向到登录页面实现。安全性和性能优化是实现这些功能时的关键考虑因素。 …

    2026年8月27日
    000

发表回复

登录后才能评论
关注微信