jquery实现同时展示多个tab标签+左右箭头实现来回滚动(美化版增加删除按钮)...
时间: 2023-12-16 11:04:04 浏览: 116
好的,我会尽力回答你的问题。首先,你需要在html中创建tab标签和箭头按钮的结构,然后使用jQuery编写相应的逻辑。
以下是一个简单的实现示例:
HTML结构:
```
<div class="tab-container">
<div class="tab-scroll">
<ul class="tab-list">
<li class="active">Tab 1</li>
<li>Tab 2</li>
<li>Tab 3</li>
<li>Tab 4</li>
<li>Tab 5</li>
<li>Tab 6</li>
<li>Tab 7</li>
<li>Tab 8</li>
<li>Tab 9</li>
<li>Tab 10</li>
</ul>
<div class="arrow prev"></div>
<div class="arrow next"></div>
</div>
</div>
```
CSS样式:
```
.tab-container {
position: relative;
overflow: hidden;
}
.tab-scroll {
position: relative;
white-space: nowrap;
}
.tab-list {
display: inline-block;
padding: 0;
margin: 0;
list-style: none;
}
.tab-list li {
display: inline-block;
padding: 10px;
cursor: pointer;
}
.tab-list li.active {
background: #f2f2f2;
color: #333;
}
.arrow {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 30px;
height: 30px;
background: #ccc;
cursor: pointer;
}
.arrow.prev {
left: 0;
}
.arrow.next {
right: 0;
}
```
jQuery逻辑:
```
$(function() {
var tabContainer = $('.tab-container');
var tabList = $('.tab-list');
var tabs = tabList.find('li');
var tabWidth = 0;
var currentTab = 0;
tabs.each(function() {
tabWidth += $(this).outerWidth();
});
tabList.width(tabWidth);
function scrollTabs(dir) {
var containerWidth = tabContainer.width();
var scrollLeft = tabList.scrollLeft();
if (dir === 'prev') {
currentTab--;
} else {
currentTab++;
}
if (currentTab < 0) {
currentTab = 0;
} else if (currentTab >= tabs.length) {
currentTab = tabs.length - 1;
}
var tabPos = tabs.eq(currentTab).position().left;
if (tabPos < 0 || tabPos + tabs.eq(currentTab).outerWidth() > containerWidth) {
if (dir === 'prev') {
tabList.animate({
scrollLeft: scrollLeft - tabs.eq(currentTab).outerWidth()
});
} else {
tabList.animate({
scrollLeft: scrollLeft + tabs.eq(currentTab).outerWidth()
});
}
}
tabs.removeClass('active');
tabs.eq(currentTab).addClass('active');
}
$('.arrow').on('click', function() {
var dir = $(this).hasClass('prev') ? 'prev' : 'next';
scrollTabs(dir);
});
tabs.on('click', function() {
currentTab = $(this).index();
scrollTabs();
});
});
```
在这个示例中,我们使用了一个包含所有tab标签的ul元素和两个箭头按钮的div元素。我们使用CSS使这些元素在父容器中水平居中,并将tab标签的列表项设置为inline-block以便它们可以在同一行上排列。
我们使用jQuery计算所有标签的宽度,并将其应用于tab标签的ul元素,以便我们可以水平滚动整个列表。我们还定义了一个currentTab变量来跟踪当前选定的标签。
我们添加了两个事件处理程序:一个用于箭头按钮的单击事件,另一个用于tab标签的单击事件。当单击箭头按钮时,我们根据箭头按钮的方向滚动到下一个或前一个tab标签,并将currentTab变量更新为相应的标签。当单击tab标签时,我们只需将currentTab变量更新为单击的标签的索引,并调用scrollTabs函数,该函数将滚动到新选择的标签。
在scrollTabs函数中,我们首先检查currentTab是否小于0或大于等于标签数,并将其限制在有效范围内。然后,我们计算新的tab标签位置,并检查它是否在容器中可见。如果不是,则使用jQuery的animate函数滚动到新标签。最后,我们将当前标签的类设置为active,并将其从其他标签中删除。
如果您想要添加删除按钮,您可以在每个tab标签后面添加一个圆形的x按钮,并添加一个单击事件处理程序来删除相应的标签。您还需要更新scrollTabs函数以确保删除标签后正确滚动到新标签。
阅读全文