请先使用浏览器的开发者工具检查你页面中的 DOM 结构,确认元素的 class 名称(比如 .e-n-tab-title)是否与下面代码中一致,如有差异请做相应调整。
你可以将下面的代码复制到页面中(例如:在 Elementor 中添加一个 HTML Widget,并将代码粘贴在 <script>
标签内),或者通过 WordPress 后台添加自定义代码(比如使用 Code Snippets 插件)。
下面是一个简单的自动切换示例,每隔 3 秒自动切换到下一个 Tab:
<script>
jQuery(document).ready(function($) {
var $tabs = $('.e-n-tabs .e-n-tab-title');
var totalTabs = $tabs.length;
var currentIndex = 0;
var interval = 3000; // 切换间隔
var timer;
function startTimer(){
timer = setInterval(function(){
currentIndex = (currentIndex + 1) % totalTabs;
$tabs.eq(currentIndex).trigger('click');
}, interval);
}
function stopTimer(){
clearInterval(timer);
}
// 鼠标悬停时停止自动切换,离开后重新开始
$('.e-n-tabs').on('mouseenter', stopTimer).on('mouseleave', startTimer);
// 页面加载后启动定时器
startTimer();
});
</script>
- 获取 Tab 元素:使用
$('.e-n-tabs .e-n-tab-title')
选择所有 Tab 标题。请根据实际生成的 HTML 结构修改选择器。 - 定时器:利用
setInterval
每隔interval
毫秒执行一次switchTab
函数,实现自动切换。 - 模拟点击:
$tabs.eq(currentIndex).trigger('click')
模拟点击事件,使对应的 Tab 被激活。 - 鼠标悬停暂停自动切换:当鼠标进入整个 Tab 区域时会调用
stopTimer()
停止自动切换,鼠标离开后再调用startTimer()
重新启动定时器。
如果想要样式更好看,可以增加进度条,在tab选项卡标签添加自动播放进度条,需要同时设置css和js代码。
1.设置自定义css
/* 让每个标签(Tab Title)采用相对定位,并预留底部空间 */
.e-n-tab-title {
position: relative;
padding-bottom: 10px; /* 根据需要调整,确保标签文字和进度条不重叠 */
}
/* 进度条样式,放在每个标签内部 */
.e-n-tab-title .tab-progress-bar {
position: absolute;
bottom: 0; /* 紧贴标签底部 */
left: 0;
height: 4px; /* 可根据需要调整进度条高度 */
background-color: #ff0000; /* 进度条颜色,可自定义 */
width: 0%;
}
/* 激活状态下触发动画 */
.e-n-tab-title .tab-progress-bar.active {
animation: progressAnim 3000ms linear forwards;
}
/* 鼠标悬停时暂停动画(这里采用悬停当前标签的方式) */
.e-n-tab-title:hover .tab-progress-bar.active {
animation-play-state: paused;
}
/* 定义进度条动画关键帧 */
@keyframes progressAnim {
from { width: 0%; }
to { width: 100%; }
}
- 这里的 3000ms 与自动切换的间隔时间保持一致,如需调整自动切换时间,请同时修改 CSS 动画时间和后续 JS 中的 interval 参数。
- 为了使进度条出现在标签文字下方,对 .elementor-tab-title 设置了 padding-bottom;你可根据实际情况进行微调。
2.设置JavaScript
将下面的 JavaScript 代码添加到页面中(例如通过 Elementor 的 HTML Widget 或使用 Code Snippets 插件),实现自动切换标签以及将进度条动态移动到当前激活的标签下方,并重启动画效果:
<script>
jQuery(document).ready(function($) {
// 获取所有标签元素(请根据实际 DOM 结构调整选择器)
var $tabs = $('.e-n-tabs .e-n-tab-title');
var totalTabs = $tabs.length;
var currentIndex = 0;
var interval = 3000; // 自动切换间隔,单位:毫秒
var timer;
// 创建进度条元素(仅创建一个,全局复用)
var $progressBar = $('<div class="tab-progress-bar"></div>');
// 将进度条添加到初始激活的标签下(这里假设页面加载时第一个标签为默认激活)
$tabs.eq(currentIndex).append($progressBar);
// 定义一个函数,用于重启进度条动画
function restartProgressBar() {
$progressBar.removeClass('active');
// 触发 reflow(重绘),以便动画重新开始
void $progressBar[0].offsetWidth;
$progressBar.addClass('active');
}
// 定义定时切换标签的函数
function switchTab() {
// 计算下一个标签的索引(循环切换)
currentIndex = (currentIndex + 1) % totalTabs;
// 触发点击事件,激活新标签(需确保你的标签点击事件能切换内容)
$tabs.eq(currentIndex).trigger('click');
// 将进度条从旧标签中移除,并添加到新激活的标签中
$progressBar.detach().appendTo($tabs.eq(currentIndex));
// 重启进度条动画
restartProgressBar();
}
// 启动自动切换定时器,并启动进度条动画
function startTimer(){
restartProgressBar();
timer = setInterval(switchTab, interval);
}
// 停止自动切换定时器,同时移除进度条动画状态
function stopTimer(){
clearInterval(timer);
$progressBar.removeClass('active');
}
// 当鼠标悬停在整个 Tab 区域时,暂停自动切换;离开后重新启动
$('.e-n-tabs').on('mouseenter', stopTimer).on('mouseleave', startTimer);
// 页面加载后启动定时器和进度条动画
startTimer();
});
</script>
- 创建进度条元素:利用 jQuery 创建一个
<div class="tab-progress-bar"></div>
,并在页面加载时将其添加到默认激活的标签中(此处假设第一个标签为默认激活)。 - 切换标签时移动进度条:在
switchTab()
函数中,先通过trigger('click')
模拟点击切换标签,再使用.detach().appendTo()
将进度条移到当前激活的标签下,并调用restartProgressBar()
重启动画。 - 自动切换与暂停:利用
setInterval
每隔interval
毫秒调用switchTab()
;当鼠标进入整个 Tab 区域时,停止定时器,离开后恢复自动切换。