- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找某种方法来使用我的选项卡实现轮播,或者为具有轮播功能的选项卡编写其他代码。
我已经编写了制作“上一个”和“下一个”按钮的代码。
现在我只想在屏幕上显示 5 个标签。
假设我有 8 个标签,我正在查看标签 1 到 5,所以标签 6、7、8 被隐藏了。
当我在第 5 个选项卡上并单击“下一步”按钮时,我想显示第 6 个选项卡并隐藏第 1 个选项卡。轮播应该就是这样工作的。我不确定如何更改我的代码来执行此操作。
jQuery(document).ready(function($) {
$('.next-tab').click(function() {
// get current tab
var currentTab = $(".tab.active");
// get the next tab, if there is one
var newTab = currentTab.next();
// at the end, so go to the first one
if (newTab.length === 0) {
newTab = $(".tab").first();
}
currentTab.removeClass('active');
// add active to new tab
newTab.addClass('active');
});
$('.prev-tab').click(function() {
// get current tab
var currentTab = $(".tab.active");
// get the previous tab, if there is one
var newTab = currentTab.prev();
// at the start, so go to the last one
if (newTab.length === 0) {
newTab = $(".tab").last();
}
currentTab.removeClass('active');
// add active to new tab
newTab.addClass('active');
});
});
.active {
border: 1px solid #000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="#" class="next-tab">next</a>
<a href="#" class="prev-tab">prev</a>
<div class="tabs">
<a href="#" class="tab new-messages">Messages</a>
<a href="#" class="tab statistics active">Stats</a>
<a href="#" class="tab shop">Shop</a>
</div>
最佳答案
除了使用 active
类来查找当前事件的选项卡之外,您还可以使用对选项卡数组的索引。索引让您可以使用模运算计算转盘的移动。
假设事件标签位于 currentIndex
,标签总数为 numTotal
。此计算将索引向左移动:
currentIndex = (currentIndex - 1 + numTotal) % numTotal;
右边:
currentIndex = (currentIndex + 1) % numTotal;
要一次显示有限数量的标签,请跟踪最左侧可见标签和最右侧可见标签的索引。
假设最左边可见选项卡的索引名为 left
。然后你可以检查 currentIndex
的新值是否已经到 left
的左边:
if (currentIndex === (left - 1 + numTotal) % numTotal)
如果有,你应该更新left
:
left = (left - 1 + numTotal) % numTotal;
您还想确保新的最左边的选项卡出现在旧的当前选项卡的左侧:
$(tabs[left]).insertBefore(currentTab);
当您环绕数组的末尾时,这很重要。例如,如果您的选项卡编号为 0 到 9,并且您从选项卡 0 向左移动,则您希望将选项卡 9 插入到选项卡 0 的左侧。
然后让最左边的新标签可见,隐藏最右边的旧标签并更新右边的索引:
$(tabs[left]).css('display', 'inline');
$(tabs[right]).css('display', 'none');
right = (right - 1 + numTotal) % numTotal;
当您将事件标签向右移动时,您必须执行类似的操作。以正确的顺序做所有事情很棘手,所以我制作了以下代码片段来演示它是如何完成的。
$(document).ready(function() {
var tabs = $('.tab'), // Make an array of tabs.
numTotal = tabs.length,
numVisible = Math.min(numTotal, 5),
currentIndex = 0,
currentTab = tabs[currentIndex],
left = currentIndex, // Track the leftmost and
right = currentIndex + numVisible - 1; // rightmost visible tabs.
$(tabs).each(function (index, tab) { // Let each tab update
$(tab).click(function () { // currentIndex to point
$(currentTab).removeClass('active'); // to itself when clicked.
currentTab = tabs[currentIndex = index];
$(currentTab).addClass('active');
});
});
$(tabs).css('display', 'none'); // Hide all tabs.
for (var i = left; i <= right; ++i) {
$(tabs[i]).css('display', 'inline'); // Show visible tabs.
}
$(currentTab).addClass('active');
$('#prevButton').click(function () {
$(currentTab).removeClass('active');
currentIndex = (currentIndex - 1 + numTotal) % numTotal;
if (currentIndex === (left - 1 + numTotal) % numTotal) {
// Shift visible span to the left.
left = (left - 1 + numTotal) % numTotal;
$(tabs[left]).insertBefore(currentTab); // Ensure we wrap around.
$(tabs[left]).css('display', 'inline');
$(tabs[right]).css('display', 'none');
right = (right - 1 + numTotal) % numTotal;
}
currentTab = tabs[currentIndex];
$(currentTab).addClass('active');
});
$('#nextButton').click(function() {
$(currentTab).removeClass('active');
currentIndex = (currentIndex + 1) % numTotal;
if (currentIndex === (right + 1) % numTotal) {
// Shift visible span to the right.
$(tabs[left]).css('display', 'none');
left = (left + 1) % numTotal;
right = (right + 1) % numTotal;
$(tabs[right]).css('display', 'inline');
$(tabs[right]).insertAfter(currentTab); // Ensure we wrap around.
}
currentTab = tabs[currentIndex];
$(currentTab).addClass('active');
});
});
body {
font-family: sans-serif;
}
#buttons, #tabs {
padding: 10px;
margin: 10px;
}
a {
text-decoration: none;
}
#buttons a {
color: #444;
background: #fff;
border: 2px solid #444;
border-radius: 5px;
padding: 5px 10px;
}
#tabs a {
color: #fff;
background: #0090ad;
border-radius: 6px 6px 0 0;
padding: 8px 15px;
margin: 0 2px;
}
#tabs a.active {
background: #2c4fad;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="buttons">
<a href="#" id="prevButton">prev</a>
<a href="#" id="nextButton">next</a>
</div>
<div id="tabs">
<a href="#" class="tab" id="tab0"> Tab 0 </a>
<a href="#" class="tab" id="tab1"> Tab 1 </a>
<a href="#" class="tab" id="tab2"> Tab 2 </a>
<a href="#" class="tab" id="tab3"> Tab 3 </a>
<a href="#" class="tab" id="tab4"> Tab 4 </a>
<a href="#" class="tab" id="tab5"> Tab 5 </a>
<a href="#" class="tab" id="tab6"> Tab 6 </a>
<a href="#" class="tab" id="tab7"> Tab 7 </a>
<a href="#" class="tab" id="tab8"> Tab 8 </a>
<a href="#" class="tab" id="tab9"> Tab 9 </a>
</div>
关于javascript - 使用 jQuery 将轮播功能添加到选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672590/
我在我的应用程序中使用开源 iCarousel 来实现轮播控件。我使用的轮播类型是 iCarouselTypeRotary 并且图像在这种类型中线性排列。但是,我需要图像像所附图像中的旋转木马一样带来
有人看过像这样的 jQuery 3D 轮播教程吗? http://web.enavu.com/demos/3dcarouselwip/ 没有给出来源,但想知道是否有人有关于如何连续圈出 DIV 并调整
我正在开发一种使用相机自动拍摄照片的软件。我希望用户能够设置照片间隔。我希望它看起来和工作起来像某种轮播。 它应该是这样的: 当我滑动(或用鼠标拖动)时,它应该沿给定方向移动: 所选项目应始终位于中间
抱歉问了个愚蠢的问题。我正在寻找带有按钮的旋转木马。我在 Bootply 上找到了这个模板,它完全符合我的要求。我在开发方面还很陌生。 也许有人可以向我解释如何摆脱侧面滚动效果。我知道我必须向 Jav
我正在寻找一个可以处理表单元素的 jQuery 轮播风格插件。 这是我需要做的。 我有三个表单元素:两个常规文本框和一个文本区域。还有两个按钮,上一个和下一个。 单击下一步按钮时,文本框/文本区域会切
我想构建一个包含两个图像轮播的网页,并且我希望能够将图像从一个轮播拖动到另一个。 我已经有了与 jCarouselLite 一起使用的图像轮播:它使用两个 UL 元素来指定轮播的图像。这工作得很好。
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我有这段代码可以从数据库中获取轮播图片或视频 $stmt = $con->prepare("SELECT * FROM `Main`"); $stmt->execut
我需要做这个 slider ,我找到了一些代码并尝试了,但没有一个完全是 LIKE THIS .bloco03 img {
我的任务是制作 3 张图片的轮播/幻灯片,只能在移动设备上使用。在桌面上,这些图像将显示在 3 列中。有没有一种方法可以自动转换,而无需我创建两个不同的模块并根据屏幕尺寸隐藏/显示一个? 最佳答案 你
我需要在卡片轮播上创建这种效果。我使用 Owl Carousel ,我给了元素框阴影。但我坚持制作不同位置元素的效果,例如 3d 或任何名称。 这是我想做的 http://www.awesomescr
我已经盯着这段相同的代码看了大约 4 个小时,并尝试观看一些不同的教程。问题是 slider 加载,有 3 张幻灯片的空间,但它只显示第一张幻灯片。 所有图像加载良好(在浏览器中验证),但轮播不会更改
我的 carouse/slider 有问题,我已经做到了,上一张和下一张图片每边各占 25%,中央图片占 50% 宽度。问题是我能够更改左右图像的背景,但我似乎无法将相同的颜色应用于中间图像。我已经尝
我想一次放 5 张图片作为页面的背景,即一张图片会显示一小段时间(比如每张一秒钟),然后重复它们。 我想知道有没有办法用 CSS 或 JS 来做到这一点? 预先感谢您的帮助! 最佳答案 这也许就是您正
我正在寻找一个支持触摸、可拖动、响应式 jQuery 滚动条/幻灯片/轮播/ slider ,用于显示水平可滚动项目列表(例如, eshop、最近将照片添加到数据库等)。 它看起来类似于苹果应用程序商
我想要夹层画廊的 Bootstrap 轮播。基本上;我正在拉入所有图像,并且我想要单行三张图像轮播。这是我非常讨厌的一段工作代码;我真的很想让它适用于无限数量的图像。 {% if page.d
大家好,我有这段代码,我一直在为我的网站编写代码。我正在尝试实现一个轮播功能,其中一张图片在另一张图片之后滑动。我遇到的问题是图片不会滑动。这是我的代码在欢迎 Controller 的索引页面中的样子
我正在构建一个简单的轮播,一旦用户水平滚动,事件点就会改变事件状态。但是,当我滚动时,jQuery 左侧位置返回值没有改变: li_left = li.position().left; // this
我正在尝试将文本放在轮播 slider 中的图像下方,但现在文本出现在图像上,而不是下方。 它看起来像这样: 但我希望它看起来像这样: 这是我的代码: final CarouselSlider aut
我在使用 boostrap carousel 时遇到 CSS 问题 我只是想让它更高,我已经尝试了几个 css 但没有任何效果。代码是在这个 jsFiddle 中,http://jsfiddle.ne
我是一名优秀的程序员,十分优秀!