
本文详细介绍了如何使用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 】
相关推荐:
发博客与长微博技巧
口腔诊所管理软件推荐
解决异步Python机器人中同步操作的阻塞问题
快手极速版在线体验区 快手极速版网页体验入口
蜻蜓FM如何设置移动流量播放
Excel怎么用XLOOKUP函数实现双向查找_ExcelXLOOKUP替代VLOOKUP+HLOOKUP的高级用法
《顺丰同城骑士》查看我的技能方法
人教版电子教材在线获取指南
2025SNH48年度青春盛典门票价格及购买方式
Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法
php如何实现多域名共享session_php存储session到redis与跨域读取配置
《全民k歌》音乐怎么下载到本地2025
《一起考教师》账号注销方法
WPS文字如何进行简繁转换
江苏大剧院会员卡购买步骤
Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置
以下哪一项是古代兵书三十六计中的计谋
Highcharts雷达图径向轴数值标签实现教程
百度竞价WAP显示PC链接问题
《腾讯相册管家》注销账号方法
sublime怎么在文件中显示代码结构大纲_sublime符号列表功能
《宝可梦大集结》S4冠军之路开始时间介绍
抖音怎么解除第三方绑定_抖音解除第三方平台绑定方法介绍
申通快递查询 申通物流快递单实时查询入口
AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案
Golang如何使用crypto/md5生成哈希_Golang MD5哈希生成方法
Python定时发送QQ消息
C++如何将字符串转换为大写或小写_C++ transform函数的使用技巧
如何查找哪个composer包引入了特定的依赖?
《大润发优鲜》充值方法介绍
mysql镜像配置如何恢复数据_mysql镜像配置数据恢复详细流程
三星M34录音变声问题_Samsung M34麦克风调整
太平年在哪个平台播出
Python中对象引用与链表属性赋值的机制解析
mysql如何限制远程访问_mysql远程访问限制方法
Flash AS3.0简易相册制作
Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型
汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口
mysql通配符能用于日志查询吗_mysql通配符在系统日志查询中的实际使用方法
J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明
yy漫画官方网站登录入口_yy漫画在线阅读页面地址
海棠阅读登录教程_详细讲解海棠登录操作
《单词速记宝》设置学习计划方法
背部总是隐隐作痛怎么回事 背痛如何改善
百度识图图像分析 百度识图识别平台
Flexbox布局:实现粘性导航与底部页脚的完美结合
解决CSS background 属性中 cover 关键字的常见误用
一点万象签到领积分指南
J*a列表元素格式化输出教程
苹果11如何更换iCloud账号_苹果11账号切换的具体步骤
2025-10-20
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。