【问题标题】:jQuery content rotatorjQuery 内容旋转器
【发布时间】:2013-01-06 10:08:18
【问题描述】:

谁能推荐我一些 jQuery 插件,用于旋转这个 HTML 结构。

<div id="event_rotator">
 <div class="event">
 <h2>Title</h2>
 <p>Text</p>
 </div>
 <div class="event">
 <h2>Title</h2>
 <p>Text</p>
 </div>
 <div class="event">
 <h2>Title</h2>
 <p>Text</p>
 </div>
</div>

我希望它会在特定时间段内自动旋转,当用户在页面上时,用户也可以通过单击箭头左右旋转它。

我尝试使用这个 http://jquery.malsup.com/cycle/pager11.html ,但我无法让它工作。

问题是,我从 PHP 代码中动态获取了这个 HTML。我不知道如何分配所需的 css(我可以分配对所有人都相同的,但我不能分配不同的Z 索引。

【问题讨论】:

  • S.O. 不是链接建议网站。向我们展示您尝试了什么,如果您有任何问题,我们将非常乐意为您提供帮助
  • 我试过这个jquery.malsup.com/cycle,但由于它没有自动旋转的能力对我来说没用
  • 好吧,不如创建自己的,如果您卡在代码中,请在此处发布,我们将仔细查看。顺便说一句,在 S.O.你有很多带有按钮的滑块,还有自动滑块等等。你只需要搜索更多!如果你有时间我已经建了一对。看看我对画廊滑块的回答
  • 自动旋转是什么意思?显示快照。
  • 相反,jQuery Cycle 默认会自动过渡。请参阅option reference 中的timeout 选项

标签: jquery jquery-ui jquery-plugins rotation autorotate


【解决方案1】:

我在 10 分钟内创建了这个,所以它不是设计师的画廊,但这个有你需要使用学习如何创建你自己 带有左/右按钮、自动旋转和悬停/暂停的幻灯片。

HTML,CSS,JS代码很简单,看一下吧:

http://jsbin.com/ofukaq/8/edit

HTML:

<div id="event_rotator">

  <button id="left">left</button>
  <button id="right">right</button>  

  <div id="slider">
   
     <div class="event">
     <h2>Title1</h2>
     <p>Text1</p>
     </div>
     <div class="event">
     <h2>Title2</h2>
     <p>Text2</p>
     </div>
     <div class="event">
     <h2>Title3</h2>
     <p>Text3</p>
     </div>
   
  </div>
  
</div>

CSS:

#event_rotator{
  width:300px;
  height:150px;
  position:relative;
  overflow:hidden;
}
#slider{
  position:absolute;
  height:150px;
  left:0; 
  width:99999px;
}
.event{
  float:left;
  width:300px;
  height:150px;
  background:#eee;
}

最后是 jQuery:

$(function(){

var W = $('#event_rotator').width();      // Gallery Width
var N = $('#slider .event').length;    // Number of elements
var C = 0;                          // Counter
var intv;                         // Auto anim. Interval


if(N<=1){ 
  $('#left, #right').hide();  // hide buttons only 1 element
}  


$('#slider').width( W*N );          // Set slider width

$('#left, #right').click(function(){
  // Animation logic
  if(this.id=='right'){
    
    C++;
    C = C % N;     // reset to '0' if end reached
    
  }else{ // left was clicked
    
    C--;
    if(C===-1){   // IF C turns -1 scroll to last one (N-1)
      C = N-1; 
    }
    
  }
  // Animation
  $('#slider').stop().animate({left: -C*W }, 1000 );
});


// auto rotate

function autoRotate(){
  intv = setInterval(function(){
      $('#right').click();
  },2000); // pause time
}
autoRotate(); // start auto rotate

// pause hover

$('#event_rotator').on('mouseenter mouseleave', function( e ){
   var mEnt = e.type=='mouseenter';
  if(mEnt){
     clearInterval(intv);
  }else{
     autoRotate();
  }
});

}); // * end document ready.

希望我让您大开眼界,有时您不需要一个 3000 行的插件来构建一个具有您需要的所有功能的漂亮画廊。


这里是使用三元运算符的稍微压缩的 jQuery 脚本:

jsBin demo

var W = $('#event_rotator').width(),
    N = $('#slider .event').length,
    C = 0,
    intv;

if(N<=1)$('#left, #right').hide(); 
$('#slider').width( W*N );

$('#left, #right').click(function(){
     C = (this.id=='right'? ++C : --C) < 0 ? N-1 : C%N ;
     $('#slider').stop().animate({left: -C*W }, 700 );
});

function auto(){
  intv = setInterval(function(){
      $('#right').click();
  }, 3000 );
}
auto();

$('#event_rotator').hover(function( e ){
  return e.type=='mouseenter' ? clearInterval(intv) : auto();
});

【讨论】:

  • 工作就像一个魅力!我只需要设置变量,这样会更流畅。左/右按钮效果不佳,但我认为我将能够设置它们可以正常工作的变量
  • @MP 如果您没有注意到我编辑了我的答案并添加了更好的代码。从逻辑上讲,按钮无法正常工作,因为在旧演示中我将它们 (HTML) OUTSIDE 放置在画廊悬停父级中。
  • 还有一个问题,如果只有一个
    ,如何隐藏左/右按钮?
  • @MP 你在 jQUery 中看到的 var N = 它返回元素的数量。放在你的变量之后:if(N&lt;=1){ $('#left, #right').hide(); }
  • 绝妙的解决方案!!!终于找到适用于对象标签的插件!!! + 很简单!
【解决方案2】:

http://jsbin.com/ofukaq/8/edit

如何使这个循环显示的标题如下:

Title 1 -&gt; Title 2 -&gt; Title 3 -&gt; Title 1 -&gt; title 2 -&gt;无限循环

代替

Title 1 -> Title 2 -> Title 3

?

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签