1

このHTML構造を回転させるために、誰かが私にjQueryプラグインを勧めてもらえますか?

<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インデックスを割り当てることはできません) 。

4

2 に答える 2

9

これは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デモ

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();
});
于 2013-01-06T10:30:30.520 に答える
-1

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

次のような表示されたタイトルをループさせる方法:

Title 1 -> Title 2 -> Title 3 -> Title 1 -> title 2 ->インフィニティループ

それ以外の

Title 1 -> Title 2 -> Title 3

于 2014-10-26T12:15:40.913 に答える