我喜欢 Coda Slider jQuery 插件。 我最近用它构建了几个选项卡式“小部件”。 一个在 CSS-Tricks 的侧边栏中,用于显示 Script & Style 链接、特色帖子和热门帖子。 这仅仅是一种在小区域展示大量内容的有趣方式。 我还在 NETTUTS 的一篇文章 中使用了它,用于类似的目的。
这两个示例几乎都“开箱即用”地使用了 Coda Slider。 当然,设计被大量更改以适应工作,但实际功能没有任何更改。 我最近被要求构建一个“特色内容区域”。 Coda Slider 几乎完美地满足了我的需求,但它需要进行一些功能上的调整才能实现我想要的功能。 非常感谢 Benjamin Sterling 帮助我解决了一些问题。

功能清单
就像我说的,Coda Slider 已经完成了 90%。 有一个主要内容区域(如果你愿意的话,可以称为“面板”),它从左到右滑动,每个面板都有不同的独特内容。 通常面板数量是固定的,但代码的编写方式使得添加或删除面板不会太麻烦。 有一些链接充当导航,可以快速跳转到任何特定的面板。 这些链接可以是任何东西(文本超链接、缩略图等),并链接到一个唯一的哈希值 URL(每个面板如果需要,都有一个唯一的 URL)。 Coda Slider 开箱即用地提供所有这些功能。
以下是我们额外需要的功能
面板中不同类型的自定义内容。 我们已经可以将任何内容放在面板中,但为了方便起见,将准备几个不同的格式。 主要格式是与整个面板大小相同的图像,但包含文本叠加。已完成。自动播放。 你仍然可以点击缩略图跳转到任何面板,但滑块会自动缓慢地循环播放面板。已添加,请参见下文。箭头指示器。 为了直观地指示当前查看的是哪个面板,会在缩略图上方显示一个小箭头指向面板。已添加。
让我们来看看 HTML、CSS 和 JavaScript。
HTML
以下是仅滑块本身的框架 HTML
<div class="slider-wrap">
<div id="main-photo-slider" class="csw">
<div class="panelContainer">
<div class="panel" title="Panel 1">
<div class="wrapper">
<!-- REGULAR IMAGE PANEL -->
<img src="images/tempphoto-1.jpg" alt="temp" />
<div class="photo-meta-data">
Photo Credit: <a href="http://flickr.com/photos/astrolondon/2396265240/">Kaustav Bhattacharya</a><br />
<span>"Free Tibet" Protest at the Olympic Torch Rally</span>
</div>
</div>
</div>
<div class="panel" title="Panel 2">
<div class="wrapper">
<!-- PANEL CONTENT -->
</div>
</div>
<div class="panel" title="Panel 3">
<div class="wrapper">
<!-- EXAMPLE OF OTHER PANEL POSSIBILITIES -->
<img src="images/scotch-egg.jpg" alt="scotch egg" class="floatLeft"/>
<h1>How to Cook a Scotch Egg</h1>
<ul>
<li>6 hard-boiled eggs, well chilled (i try to cook them to just past soft boiled stage, then stick them in the coldest part of the fridge to firm up)</li>
<li>1 pound good quality sausage meat (i used ground turkey meat, seasoned with sage, white pepper, salt and a tiny bit of maple syrup)</li>
<li>1/2 cup AP flour</li>
<li>1-2 eggs, beaten</li>
<li>3/4 cup panko-style bread crumbs</li>
<li>Vegetable oil for frying</li>
</ul>
</div>
</div>
<div class="panel" title="Panel 4">
<div class="wrapper">
<!-- PANEL CONTENT -->
</div>
</div>
<div class="panel" title="Panel 5">
<div class="wrapper">
<!-- PANEL CONTENT -->
</div>
</div>
<div class="panel" title="Panel 6">
<div class="wrapper">
<!-- PANEL CONTENT -->
</div>
</div>
</div>
</div>
<!-- TO MAKE THESE THUMBNAILS ACTUALLY WORK, BOTH THE HASH VALUE (#1, ETC.)
AND THE CLASS="CROSS-LINK" ARE REQUIRED -->
<a href="#1" class="cross-link active-thumb"><img src="images/tempphoto-1thumb.jpg" class="nav-thumb" alt="temp-thumb" /></a>
<div id="movers-row">
<div><a href="#2" class="cross-link"><img src="images/tempphoto-2thumb.jpg" class="nav-thumb" alt="temp-thumb" /></a></div>
<div><a href="#3" class="cross-link"><img src="images/tempphoto-3thumb.jpg" class="nav-thumb" alt="temp-thumb" /></a></div>
<div><a href="#4" class="cross-link"><img src="images/tempphoto-4thumb.jpg" class="nav-thumb" alt="temp-thumb" /></a></div>
<div><a href="#5" class="cross-link"><img src="images/tempphoto-5thumb.jpg" class="nav-thumb" alt="temp-thumb" /></a></div>
<div><a href="#6" class="cross-link"><img src="images/tempphoto-6thumb.jpg" class="nav-thumb" alt="temp-thumb" /></a></div>
</div>
</div>
CSS
此示例的完整 CSS 包含基本重置、一些实用程序样式和基本结构。 在下面,我只会向您展示与滑块本身相关的 CSS,但您可以 在此查看完整 CSS。
.slider-wrap { width: 419px; position: absolute; top: 87px; left: 40px; }
.stripViewer .panelContainer
.panel ul { text-align: left; margin: 0 15px 0 30px; }
.stripViewer { position: relative; overflow: hidden; width: 419px; height: 285px; }
.stripViewer .panelContainer { position: relative; left: 0; top: 0; }
.stripViewer .panelContainer .panel { float: left; height: 100%; position: relative; width: 419px; }
.stripNavL, .stripNavR, .stripNav { display: none; }
.nav-thumb { border: 1px solid black; margin-right: 5px; }
#movers-row { margin: -43px 0 0 62px; }
#movers-row div { width: 20%; float: left; }
#movers-row div a.cross-link { float: right; }
.photo-meta-data { background: url(images/transpBlack.png); padding: 10px; height: 30px;
margin-top: -50px; position: relative; z-index: 9999; color: white; }
.photo-meta-data span { font-size: 13px; }
.cross-link { display: block; width: 62px; margin-top: -14px;
position: relative; padding-top: 15px; z-index: 9999; }
.active-thumb { background: transparent url(images/icon-uparrowsmallwhite.png) top center no-repeat; }
其中任何以“.strip”开头的样式都与滑块本身的核心有关,包括设置面板和它们周围的包装器,以及使滑块正常工作所需的 CSS 魔术。 从“.nav-thumb”以下的样式是针对此示例的特定内容。 缩略图有细黑色的边框。 元数据部分被图像推到面板之外,但随后使用负上边距和透明黑色背景强制回到面板内。
“.active-thumb”类也非常重要,如果缩略图包含此类,它将获得应用的特殊背景,即我们希望用于指示当前面板的白色箭头。 此类将在 JavaScript 中添加和删除。
JavaScript
在 HTML 的标题部分,您需要包含 jQuery 和所有插件文件。 最基本的代码如下所示
<script type="text/javascript" src="js/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="js/jquery-easing-1.3.pack.js"></script>
<script type="text/javascript" src="js/jquery-easing-compatibility.1.2.pack.js"></script>
<script type="text/javascript" src="js/coda-slider.1.1.1.pack.js"></script>
<script type="text/javascript">
$(function(){
$("#main-photo-slider").codaSlider();
});
</script>
这将激活滑块,但请记住,我们还需要实现一些额外的功能。 我们可以通过编写自己的函数来添加这些功能,而不是直接修改插件本身。 本质上,为了实现“自动播放”效果,我们将在每 3 秒触发下一个缩略图的点击事件。 我们将函数命名为“theInterval”,还需要几个变量,所以先设置它们。
var theInt = null;
var $crosslink, $navthumb;
var curclicked = 0;
theInterval = function(cur){
clearInterval(theInt);
if( typeof cur != 'undefined' )
curclicked = cur;
$crosslink.removeClass("active-thumb");
$navthumb.eq(curclicked).parent().addClass("active-thumb");
$(".stripNav ul li a").eq(curclicked).trigger('click');
theInt = setInterval(function(){
$crosslink.removeClass("active-thumb");
$navthumb.eq(curclicked).parent().addClass("active-thumb");
$(".stripNav ul li a").eq(curclicked).trigger('click');
curclicked++;
if( 6 == curclicked )
curclicked = 0;
}, 3000);
};
但我们还没有完成。 我们需要调用我们的函数,首先要做到这一点。 我们还需要正确处理手动点击缩略图的事件。 我们希望手动点击事件使用相同的函数,以便正确重置“当前”缩略图,并且不会出现奇怪的跳跃。 在我们的函数之后,现在可以添加以下最终代码,在 DOM 就绪时执行
$(function(){
$("#main-photo-slider").codaSlider();
$navthumb = $(".nav-thumb");
$crosslink = $(".cross-link");
$navthumb
.click(function() {
var $this = $(this);
theInterval($this.parent().attr('href').slice(1) - 1);
return false;
});
theInterval();
});
另外需要注意几点。 请注意函数中的数字“6”是硬编码的。 如果更改了缩略图数量,则需要在此处也进行更改。 此外,您可能注意到了看似奇怪的触发点击事件的元素(“.stripNav ul li a”……它在哪里?!)。 您会注意到它不在我们的 HTML 中。 实际上,Coda Slider 插件在运行时会根据面板数量自动生成此无序列表。 在某些情况下,这非常方便,在我们这个示例中,我们已在 CSS 中将其隐藏。 但我们在函数中使用它们,因为它们将是触发点击事件最可靠的元素。 无论如何,它们都会存在,并且即使我们不使用缩略图导航,此示例仍将继续工作并自动播放。
更新:自动播放
var $j = jQuery.noConflict();
var theInt = null;
var curclicked = 0;
var stop = 0;
theInterval = function(cur){
clearInterval(theInt);
theInt = setInterval(function(){
$j(".coda-nav-right a").eq(curclicked).trigger('click');
curclicked++;
if( 10 == curclicked )
curclicked = 0;
$j("#stop").click(
function(){
if (stop==0){
clearInterval(theInt);
stop=1;}
});
}, 750);
$j("#stop").click(
function(){
stop=0;
theInterval();
}
);
};
$j(function(){
$j("#main-photo-slider").prepend('<div id="stop">Start/Stop</div>');
$j("#main-photo-slider").codaSlider();
theInterval();
});
太棒了,这正是我现在需要的。 谢谢!
太棒了。 我一年前做过类似的东西。
http://jeeran.com/tour.aspx?lang=e
当它是阿拉伯语时,这非常具有挑战性。
非常酷。 我最近一直在寻找类似的东西,用于我网站上的摄影师部分。 谢谢 Chris。
好吧,但更重要的是……我今天早上的早餐太糟糕了,然后我坐下来浏览我的订阅,看到了这个鸡蛋! 那么,我在哪里可以找到完整的食谱呢? 😉
是的!!
我在 lifehacker.com 的标题栏中看到一个类似的小部件后,就一直在寻找类似的东西。 但这个有自动滚动功能。 这简直太棒了。
谢谢!
我忘了说 asylum.com 也有一些类似的东西。 但我认为他们没有使用 coda
这太棒了。 我用 Flash 做了一个这样的东西,但很讨厌。 这个似乎以一种相当轻松的方式解决了问题。
谢谢!
你能实现某种方法(暂时)暂停滑块吗? 例如,悬停或点击并按住? 我很难阅读文本量很大的项目 -> 你在本文上方展示苏格兰蛋食谱真是太贴心了 ;-)
哦,天哪……太棒了。 我一直在想我在哪里可以找到它? 现在……我要在我的一个项目中实现它。
非常感谢。
是的,这是最好的,我想添加一些东西,比如在循环一段时间后自动播放停止,以及添加鼠标悬停触发器……如何做到这一点?
非常棒。 我使用过 Cycle Jquery 插件,效果类似。 它具有悬停暂停功能,因此您可以阅读文本。
一些建议
1. 暂停/停止和播放按钮
2. 可配置的计时器变量 - 例如,每张幻灯片 4 秒或其他时间。
3. 可变幻灯片计时器 - 例如,如果某张幻灯片需要显示更长时间(例如第一张幻灯片;或文字较多的幻灯片)才能切换,则可以将其设置为变量。
4. 效果变量。我不喜欢这个例子从最后一张图片跳回到第一张图片的方式。我更喜欢类似于图片/幻灯片轮播的效果。
这很棒,我能想象这可以用于许多项目。
感谢您的帖子和下载。
Max | 设计碎片
我同意 Brian Lang 的说法。
[js/jquery-easing-compatibility.1.2.pack.js]
“为使用 1.2 之前缓动名称的应用程序添加兼容性”
我一直在想为什么会有这个额外的 js 文件。
您可以使用超过 6 张图片吗?如果缩略图栏有单独的、独立的滚动控件会很好。例如,如果当第 7 张图片进入自动播放序列时,它会将整个缩略图行移动一次。
不过,这效果很好。我特别喜欢缓动效果!很棒的帖子!
我得一遍又一遍地说:“谢谢”。我是一个十足的黑客,仍然在努力维护一个网站,不仅仅作为一种爱好,而且作为更新和不断学习新事物的挑战。偶然发现您的网站,以及您的 Script & Style 网站,绝对是天赐之福。
感谢您的分享。我喜欢能够学习新事物并应用它们,而您确实让这变得很容易。
肯定会加到我的书签里。
这是我想在我的一个网站上尝试的东西!
愚蠢的问题,但我可以在 WordPress 中集成它吗?我想主要需要注意的是确保我拥有 jQuery 文件的正确路径,并且显然需要进行一些调整,但应该就这些了吧?
很棒的实现!感谢您发布这个。我只有一个关于设计方面的评论……我认为指示内容需要更改的“箭头”需要改进。当显示的内容为白色时,指针会消失。也许可以添加一个小的描边?或者,让指针指向缩略图下方(再次,添加一个小的描边)?
如何在这个脚本到达结尾时停止它?
这很棒,我一直在寻找类似的东西,在查看了其他 jQuery 幻灯片展示后,这是我找到的最好的,特别是您处理源文件的方式,甚至包括 Photoshop psd 文件,这太令人印象深刻了;msn.co.uk 上也有相同的东西,但缩略图在右侧垂直排列而不是水平底部排列。
非常感谢,真的很感谢。
我已经实现了这个,效果很好。
然而,样式设置有点困难。为什么第一个缩略图单独放在那里?它最终会比其他五个高或低。有很多奇怪的负边距,我不习惯。
如何将它实现到 WordPress 插件或主题中?
我发现 jquery-1.2.6.min.js 与 lightview 不兼容 :(
非常棒的例子。但代码太难了,而且没有针对其他开发人员使用进行优化。
这很酷 :) 我很快就会将它添加到 http://gtablog.es/ :)
感谢您提供很棒的教程!
我在我们公司内部网站上使用它来展示首页新闻和有趣的建筑。
我已经修改了代码,让自动播放速度稍微慢一些,但它只减慢了从第一个磁贴到第二个磁贴的速度,之后又恢复到更快的速度。
员工唯一遇到的评论/抱怨是,当他们试图阅读某样东西时,它会跳转到下一页。如果底部或侧面有一个暂停/播放按钮会很棒。
或者,也许当他们点击缩略图时,自动播放功能会禁用。
感谢您提供代码!其他一切功能都很好!
谢谢!我是一家位于纽约的网页设计公司的一部分,这篇文章非常有用!再次感谢!
您好,
我想知道是否可以将这个脚本与图片按钮一起使用。我看到了一些这个滑块的例子,它使用文本链接或 CSS 选项卡,但我想要使用的是活动状态和非活动状态的单独按钮。您可以在我的网站上看到一个小的例子,其中有 3 个黑白按钮。当您将鼠标悬停在它们上面时,它们会变色。我想要的是,当您点击一个按钮时,着色的按钮会保持可见。
现在我可以使用 Flash 实现这一点,但我想要让我的网站不再使用 Flash =)
提前感谢。
Jeff
嗨!
我一直是您作品的忠实粉丝!您的教学风格很棒!最近一直在做网页作业,使用了很多 jQuery 来获得“flash”效果,但没有使用 flash……总之,我的评论/问题是
“有没有什么好的方法/实践来将良好的降级效果应用到 jQuery 代码中,这样如果禁用了 javascript,内容就不会从底部冒出来?或者有 CSS 技巧吗?”
再次,喜欢您的作品!激励我做得更好的设计工作!
您好,
首先,我要感谢您提供很棒的文章和内容滑块。
有一件事我搞不清楚如何将它集成到我的 asp.net 应用程序中。在重复器中创建面板很容易,但当涉及到分页器时,实现这一点有点令人困惑。
因为分页器项位于 “movers-row” div 之外。
谢谢
您好,
这很不错。我在我的网站上使用了它,但滑块移动正常,但顶部面板中的图片没有变化,所以发生了什么?我按照这里给出的说明操作,也正确地放置了代码,所以哪里出错了?
这太棒了。 我用 Flash 做了一个这样的东西,但很讨厌。 这个似乎以一种相当轻松的方式解决了问题。
有没有办法停止滑块?
谢谢
一如既往,很棒的教程,但是当我添加第二行图片时,遇到了一些问题,不知道为什么。所以我使用您的教程作为灵感,但用稍微不同的方法来获得相同的结果。我使用 jQuery cycle 来实现这一点,它会自动创建缩略图,这更容易。看看我的作品 http://www.thainesia.com.au/image。欢迎任何评论。谢谢
这真的太棒了。我将构建自己的版本,并将其应用到我的当前项目中。
非常感谢您分享!
这正是我一直在寻找的,而且解释得非常清楚。非常感谢!
嘿,我不知道如何使用这个幻灯片,请帮忙
您好,
我需要增加 div class=’wrapper’ 的大小。
wrapper 类在哪里?
Grato,
Álvaro
像许多其他人一样,我真的很想添加一个暂停功能,但我不知道如何自己实现。有谁设法为这个滑块添加了暂停功能吗?这个滑块非常接近完美——如果它只有在悬停时暂停就好了!
查看开始/停止滑块
我让一切正常工作,并记得增加图片数量,我的缩略图消失了。我完全不知道如何找回它们。需要一些帮助。
我该如何将缩略图从旋转图片下方移动到它的右侧,分成两列?
非常感谢,非常棒的例子
嗨,
我喜欢这个滑块。但我完全无法让它工作。我已经将所有文件夹内容放入了,然后复制粘贴了你的代码,但没有效果。还需要额外的代码吗?有没有针对非程序员的更详细、更基础的教程?
很棒的工作,在我看来,它比 Coda 里的更容易理解。如果可能的话,我有一个关于未来滑块布局的请求。基本上是左箭头、特色图片、右箭头。当鼠标悬停在特色图片上时,它也应该停止滑动。
我只是想找一种方法来做同样的事情,但不会占用太多空间......箭头实际上可以在特色图片的左右两侧占用 30 个像素。不幸的是,我见过的每个滑块/轮播都有太多东西,而且很难清理。
是否可以让他们垂直滑动而不是水平滑动?
很棒的插件。我找了很久了。
很棒的插件,感谢你投入的所有工作,它看起来很简洁,运行良好。
外部链接/交叉链接功能似乎不再像 Coda Slider 那样在你版本中正常工作。我以为是我的代码有错误,但当我查看你的演示时,它也有同样的问题。单击第一个缩略图图像本身不会生成“#1”;单击它上面的位置会生成,但不会产生有效的链接。对为什么这样有什么想法吗?
团队中的设计师说这个插件很棒!迫不及待地想在即将为一家大型澳大利亚出版商进行的项目中使用它。
酷...这正是我要找的。你真是太棒了!!!
这太酷了
感谢这篇文章。不过我遇到一个问题。当我将某些内容放在滑块部分下方时,它使用的是滑块的边距,而不是恢复到屏幕的左侧。
我已经将代码放在所有端点的外部。我需要做什么来重置边距?
提前感谢你的帮助!
非常感谢
一个问题,我可以改变幻灯片过渡吗?使用淡入淡出效果
我需要在 js 文件中更改什么?
如果你能帮我,非常感谢
我的问题是
我需要在 js 文件中更改什么?
是否可以在面板中嵌入 YouTube 视频 iframe?
我已经尝试过,但没有成功。
嗨 Chris
我需要更改过渡类型,是否可以应用淡入淡出过渡?
更改在哪里?
如何在我的缩略图上添加下一个/上一个箭头,请帮帮我
我如何在图像下方添加带有悬停状态的文本,并在点击时更改?如果用户点击图像或文本,滑块会正常工作?有可能吗?谢谢。