
本文详细介绍了如何使用jquery和`window.matchmedia()`实现响应式marquee效果,确保在移动设备(屏幕宽度小于768px)上自动初始化marquee插件,而在桌面设备上(屏幕宽度大于等于768px)自动销毁。通过结合`data-*`属性进行状态管理,避免了插件重复初始化或销毁导致的错误,提供了一个健壮且性能优化的解决方案。
在现代网页设计中,为了提供最佳的用户体验,许多交互元素需要根据设备的屏幕尺寸进行动态调整。Marquee(跑马灯)效果作为一种常见的文本或图片滚动展示方式,在移动设备上可能有助于节省空间并吸引用户注意力,但在桌面设备上则可能显得冗余或分散注意力。因此,实现一个能在移动端初始化、在桌面端销毁的响应式Marquee功能变得尤为重要。
要实现这一功能,我们需要解决两个主要问题:
本教程将结合jQuery库、jQuery.Marquee插件、window.matchMedia() API以及HTML data-* 属性来构建一个稳定可靠的解决方案。
首先,确保你的项目中已引入jQuery库和jQuery.Marquee插件。你可以通过CDN或本地文件引入它们:
<!-- 引入 jQuery 库 --> <script src="https://code.jquery.com/jquery-3.6.0.js"></script> <!-- 引入 jQuery.Marquee 插件 --> <script src="https://cdn.jsdelivr.net/npm/jquery.marquee@1.6.0/jquery.marquee.min.js"></script>
接下来,定义一个用于展示Marquee内容的HTML元素。例如:
<div class="tt-services-listing"> 这是需要滚动的文本内容。请调整浏览器窗口大小,观察Marquee效果的变化。 Lorem ipsum dolor sit amet, consectetur adipiscing elit. </div>
我们将使用window.matchMedia()来监听屏幕宽度的变化,并利用元素的data-*属性来跟踪Marquee插件的初始化状态。
window.matchMedia()是一个强大的API,允许我们在J*aScript中执行CSS媒体查询。它返回一个MediaQueryList对象,其中包含matches属性(一个布尔值,指示当前文档是否匹配媒体查询)和addListener()方法(用于监听媒体查询状态的变化)。
SONIFY.io
设计和开发音频优先的产品和数据驱动的解决方案
75
查看详情
jQuery($ => { // 确保DOM加载完毕且 $ 别名可用
// 定义媒体查询:当屏幕宽度小于768px时匹配
const m768 = matchMedia("(width < 768px)");
// 获取需要应用Marquee效果的元素
const $listings = $('.tt-services-listing');
// 定义Marquee插件的配置选项
const marqueeOptions = {
duration: 20000, // 滚动持续时间
duplicated: true, // 是否复制内容以实现无缝滚动
delayBeforeStart: 0, // 开始前的延迟
startVisible: true, // 开始时是否可见
};
// 定义处理Marquee初始化和销毁的函数
const handleMarquee = () => {
// 如果当前屏幕宽度小于768px (移动端) 且 Marquee尚未初始化
if (m768.matches && !$listings.data("marqueeinit")) {
// 设置 data-marqueeinit 属性为1,表示已初始化
$listings.data("marqueeinit", 1);
// 初始化Marquee插件
$listings.marquee(marqueeOptions);
}
// 如果当前屏幕宽度大于等于768px (桌面端) 且 Marquee已初始化
else if (!m768.matches && $listings.data("marqueeinit")) {
// 移除 data-marqueeinit 属性,表示已销毁
$listings.removeData("marqueeinit");
// 销毁Marquee插件
$listings.marquee("destroy");
}
};
// 监听窗口大小变化事件,每次变化时调用 handleMarquee 函数
$(window).on("resize", handleMarquee);
// 页面加载时立即执行一次 handleMarquee,以根据初始屏幕宽度设置Marquee状态
handleMarquee();
});避免重复操作:原始代码中的问题在于,在resize事件中没有检查Marquee是否已经初始化或销毁,导致可能在已初始化的情况下重复初始化,或在未初始化的情况下尝试销毁,从而引发错误。通过data-marqueeinit属性进行状态管理完美解决了这个问题。
window.matchMedia() 的优势:
Debounce resize 事件 (可选):尽管matchMedia本身已经很高效,但如果你有其他复杂的逻辑也在resize事件中执行,考虑使用防抖(debounce)技术来限制handleMarquee函数被调用的频率,进一步优化性能。例如:
let resizeTimer;
$(window).on("resize", () => {
clearTimeout(resizeTimer);
resizeTimer = setTimeout(handleMarquee, 200); // 200ms 延迟
});插件路径:确保jquery.marquee.min.js的CDN链接是正确的。email protected] 这种格式通常是防止爬虫的,实际使用时应替换为正确的CDN路径,例如https://cdn.jsdelivr.net/npm/jquery.marquee@1.6.0/jquery.marquee.min.js。
通过结合window.matchMedia()进行响应式判断和data-*属性进行状态管理,我们可以优雅地实现jQuery Marquee插件在不同屏幕尺寸下的动态初始化和销毁。这种方法不仅解决了常见的重复初始化或销毁错误,还提供了一个性能更优、代码更清晰的解决方案,是实现复杂响应式交互的有效实践。
以上就是响应式jQuery Marquee:移动端初始化与桌面端销毁的实现指南的详细内容,更多请关注其它相关文章!
# javascript
# java
# jquery
# html
# js
# css
# 你可以
# 化与
# 这是
# 加载
# 网页设
# 爬虫
# win
# ai
# 浏览器
# npm
# cdn
# 是一个
# 吉林seo排名需要做吗
# 宣城百度网站推广费用
# 如何推广自己的优惠网站
# 黑河seo推广网站
# 上海网站建设哪家强
# 公司网站建设优点缺点
# 舞钢网站建设推广
# 更清晰
# 事件中
# 移除
# 屏幕尺寸
# 能在
# 济宁网站建设模块有哪些
# 昌黎智能网站建设
# 延庆网站建设师
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
AO3中文入口稳定分享_AO3官网HTTPS看文详解
漫蛙官网(首页入口)_漫蛙漫画稳定访问教程分享
C++中std::thread和std::async的区别_C++并发编程与线程与异步任务比较
热血江湖归来医师加点攻略
J*aScript模块加载器_RequireJS原理分析
J*a里如何处理ArithmeticException并防止除零_算术异常防护策略解析
PHP多语言网站的实现:会话管理与翻译函数优化教程
composer 提示 "requires ext-soap" 缺少 SOAP 扩展怎么办?
《随手记》关闭首页消息推送方法
解决PHP MySQL数据库更新无响应:SQL查询语法错误解析
海棠阅读网页版_进入海棠网页版在线阅读中心
123网页端官方登录页 123邮箱网页版即时通讯服务
京东快递包裹信息查询入口 京东快递官方查询平台入口
中大网校app做题记录清除方法
《宝可梦大集结》S4冠军之路开始时间介绍
智慧职教mooc平台登录网址 智慧职教mooc官网直达
MongoDB聚合管道:高效统计列表中各项的文档数量
HTML中多图片上传与预览:解决ID冲突的专业指南
除了Copilot,还有哪些值得一试的VS Code AI插件?
Mac如何开启画中画模式_Mac Safari浏览器视频画中画功能
蛙漫2(台版)正版官网 2025免费网页版分享
《火花chat》搜索好友方法
小红书网页版首页入口 小红书网页版电脑端官方登录链接
iPhone 14 Pro如何更改区域设置_iPhone 14 Pro地区语言修改教程
苹果手机怎么合并照片_苹果手机合并多张照片的操作方法
OPPO A3 WiFi频繁断开怎么办 OPPO A3网络优化技巧
如何在CSS中使用伪类选择器_hover实现悬停效果
腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台
PHP使用DOMDocument与XPath精准追加XML元素教程
使用 J*aScript 随机化 CSS Grid 布局中的元素顺序
顺丰快递在线查询系统 顺丰快递官方查单入口
顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南
猫眼电影app如何筛选支持退改签的影院_猫眼电影退改签影院筛选方法
Python中处理嵌套字典与列表的数据提取与过滤教程
江苏大剧院会员卡购买步骤
抖音作品被限流怎么办 抖音内容优化与流量恢复方法
POKI小游戏在线免费入口链接 POKI小游戏无下载秒玩玩
疯狂小鸟微信小游戏入口 疯狂小鸟网页版秒玩
mysql通配符能用于日志查询吗_mysql通配符在系统日志查询中的实际使用方法
《sketchbook》选中部分图案移动方法
SQL聚合查询、联接与筛选:GROUP BY 子句的正确使用与常见陷阱
支付宝网页版在线入口 支付宝官网电脑登录入口
食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗
ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算
Python测试中模块导入路径解析的最佳实践
windows10怎么开启卓越性能_windows10电源选项代码激活
《华夏千秋》龙女试炼功法获取方法
汽水音乐在线入口 汽水音乐网页端官方页面快速打开
qq邮箱怎么注册_QQ邮箱注册步骤与注意事项
哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南
2025-10-20
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。