【问题标题】:Cycle Divs and Thumbnails循环 div 和缩略图
【发布时间】:2012-01-23 00:36:58
【问题描述】:

我希望有人能救我!我正在尝试为我的页面创建一个(希望如此)简单的旋转横幅。我有 7 个包含照片和文字的 div,它们如下:

<div id="content-1">Sample text</div>
<div id="content-2">Sample text</div>
<div id="content-3">Sample text</div>
<div id="content-4">Sample text</div>
<div id="content-5">Sample text</div>
<div id="content-6">Sample text</div>
<div id="content-7">Sample text</div>

在这些 div 下方,我有 7 个相应的 div 缩略图:

<div id="thumb-content-1">Sample text</div>
<div id="thumb-content-2">Sample text</div>
<div id="thumb-content-3">Sample text</div>
<div id="thumb-content-4">Sample text</div>
<div id="thumb-content-5">Sample text</div>
<div id="thumb-content-6">Sample text</div>
<div id="thumb-content-7">Sample text</div>

我想做几件事:

1) 每 5 秒循环通过一个新的 div(因此“content-1”会显示 5 秒,然后是“content 2”等。

2) 为当前缩略图应用一个名为“cr-rotator”的类。我已经设置了样式。

3) 当用户将鼠标悬停在主 div 或缩略图 div 上时,我希望能够暂停它的旋转。

4) 最后,我想拥有它,这样如果您将鼠标悬停在缩略图上,它会更改主要内容,然后在您关闭鼠标时继续循环。例如,假设您将鼠标悬停在“thumb-content-3”上,它将使 div“content-3”可见,然后当您将鼠标移出时,它将继续循环。

我知道这里有很多要求,我提前感谢任何可以帮助我的人。我已经获得了一个脚本来循环浏览主要图像,但我不确定如何实现其余部分:

var divs = $('div[id^="content-"]').hide(),
    i = 0;

(function cycle() { 
    divs.eq(i).fadeIn(200)
              .delay(3000)
              .fadeOut(200, cycle);

    i = ++i % divs.length; // increment i, 
                           //   and reset to 0 when it equals divs.length
})();

非常感谢任何可以帮助我的人。

【问题讨论】:

  • 你说:'4)改变主要内容'...主要内容是什么? ...如果您单击缩略图怎么办?有什么互动吗?还是说单击实际上是要注意的 mouseOver?
  • 对不起,对于数字 4,我的意思是,如果您将鼠标悬停在缩略图上,它将使相应的 div 可见。例如,假设您将鼠标悬停在“thumb-content-3”上,它将使 div“content-3”可见。另外,我设置了它,以便在每个缩略图 div 中都有一个图像,当单击该图像时会转到特定页面。
  • 您真的需要所有这些 ID 吗?你不能只为你的元素组使用一个类吗?附言。你能设置一个带有演示的 jsfiddle 或 jsbin,以便我可以添加一个 jQ 吗?

标签: jquery html hover rotator


【解决方案1】:

Fade rotator - Demo on jsBin

<div id="rotator">
  
  <div id="slides">
    <div>Sample text 1</div>
    <div>Sample text 2</div>
    <div>Sample text 3</div>
  </div>

  <div id="thumbs">
    <div>1</div>
    <div>2</div>
    <div>3</div>   
  </div>
  
</div>
  • 自动淡入淡出
  • 悬停时暂停
  • 悬停在拇指上会触发主幻灯片
  • 在停止的地方重新启动

还有jQ代码:

var $el = $('#fader'),
    
//  SETUP  ////////
    F = 600 ,    // Fade Time
    P = 2000 ,   // Pause Time
    C = 0 ,      // Counter / Start Slide# (0 based)
///////////////////
    
    $sl = $('#slides > div'),
    $th = $('#thumbs > div'),
    N = $sl.length,
    T = null;

$sl.hide().eq(C).show();
$th.eq(C).addClass('on');

// ANIMATION
function anim() { 
  $sl.eq(C%N).stop(1).fadeTo(F,1).siblings().fadeTo(F,0);
  $th.removeClass('on').eq(C%N).addClass('on');
}

// AUTO ANIMATE     
function autoAnim() {   
   T = setTimeout(function() {
      C++;
      anim();     // Animate
      autoAnim(); // Prepare another iteration
   }, P+F);
}
autoAnim();      // Start loop

// HOVER PAUSE
$el.hover(function(e) {
   return e.type==='mouseenter'? clearTimeout( T ) : autoAnim();
});

// HOVER THUMBNAILS
$th.on('mouseenter', function() {
   C = $th.index( this );
   anim();
});

【讨论】:

    【解决方案2】:

    实现所需功能的最简单方法是使用 Malsup 的 Cycle 插件。转到http://jquery.malsup.com/cycle/ 并下载脚本,然后查看他提供的文档齐全的演示。使用 Cycle 让您有机会利用大量不同的选项,这些选项将让您永远手动编写代码。

    【讨论】:

    • 感谢您的提示!我去看看!
    • 我一直在玩 Cycle 插件,可以让它在 'content-1' div 中旋转,但我不能让 'thumb-content-1' div 随之旋转或应用悬停效果或任何东西......几乎准备放弃这个......
    猜你喜欢
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多