1

この jQuery スライダー ソリューションを変更しようとしました: https://stackoverflow.com/a/9864636/908491 (最初のソリューション - http://jsfiddle.net/sg3s/rs2QK/を使用)。

ここに私の jsFiddle があります: http://jsfiddle.net/markrummel/KSHSX/

DIV のスライド インは問題なく動作しますが、スライド アウトされた DIV は、DIV のスライド インと同じ速度でスムーズにスライドするのではなく、飛び出し.hide()ますoverflow:hidden。スライドされている DIV が移動します。

を使用するのはこれが初めて.animate()なので、提供できるヘルプがあれば大歓迎です!

これが私のJavaScriptです:

$('.date-nav-prev').click(function () {
    $('.date-nav-next').show();
    var current = $('.visible-actions');
    var prev = current.prev('.user-actions');
    current.removeClass('visible-actions').animate({
        left: current.width()
    }, 500, function() {
        //current.hide();
    });
    prev.addClass('visible-actions').show().css({
        left: -(prev.width())
    }).animate({
        left: 0
    }, 500);
});

$('.date-nav-next').click(function () {
    var current = $('.visible-actions');
    var next = current.next('.user-actions');
    current.removeClass('visible-actions').animate({
        left: -(current.width())
    }, 500, function() {
        //current.hide();
    });
    next.addClass('visible-actions').show().css({
        left: prev.width()
    }).animate({
        left: 0
    }, 500);
});

HTML:

<button class="date-nav-prev">< Prev</button>
<button class="date-nav-next">Next ></button><br />
<div id="wrapper">
  <div class="user-actions daysAgo2">
      Actions from 2 Days Ago</div>
  <div class="user-actions yesterday">
      Yesterday's Actions</div>
  <div class="user-actions today visible-actions">
      Today's Actions</div>
</div>

CSS:

.user-actions.yesterday, .user-actions.daysAgo2, .date-nav-next {display:none;}
#wrapper{width:250px; height:300px; border:1px solid #333;position:relative; float:left;
 /*overflow:hidden;*/
}
.user-actions {width:100%; height:100%; position:relative; float:left; overflow:hidden; margin:0;}
.today {background:green;}
.yesterday {background:yellow;}
.daysAgo2 {background:orange;}
4

2 に答える 2

6

どの方向に進むことができるかを示すために、全体を少し単純化しました。ほとんどのプラグインには、実際のボックス自体ではなく、左右にスライドするラッパー ボックスがあります。それは物事を少し簡単にします。

DEMOをご覧ください。

#slider左右にスライドする div を追加しました。

<button class="date-nav-prev">< Prev</button>
<button class="date-nav-next">Next ></button>
<div id="wrapper">
    <div id="slider">
        <div id="daysAgo2">Actions from 2 Days Ago</div>
        <div id="yesterday">Yesterday's Actions</div>
        <div id="today">Today's Actions</div>
    </div>
</div>

ラッパーを次のoverflow:hidden;ように設定して、現在のスライドより前または過去のすべてのスライドが非表示になるようにします。

#wrapper{
    width:300px; 
    height:300px; 
    border:1px solid #333;
    position:relative; 
    overflow:hidden;
}
#slider {
    width: 1000px;
    height: 100%;
    position: absolute;
}
#slider div {
    width:300px; 
    height:100%; 
    float:left; 
}
#today{background:green;}
#yesterday {background:yellow;}
#daysAgo2 {background:orange;}

スライダーを左右にスライドさせるだけです。もちろん、このようなスライダーの拡張に制限はありません。

var sliderWidth = 300;
var slider = $('#slider');
var sliderCount = $('div', slider).length;
slider.width(sliderCount * sliderWidth);

$('.date-nav-prev').click(function () { 
    $('#slider').animate({left: '+='+sliderWidth}, 500);
});

$('.date-nav-next').click(function () {
    $('#slider').animate({left: '-='+sliderWidth}, 500);
});
于 2013-07-11T20:58:09.087 に答える
0

このプラグインを使用して使用できます

$('#wrapper').cycle({
    fx:     'scrollHorz',
    prev:   '#prev',
    next:   '#next',
    timeout: 0
});

例はこちら

于 2013-07-11T20:13:42.260 に答える