私は子供たちをアニメーション化していましたが、連続ループでそれがぎくしゃくしていることがわかりました。マージンの使用を試みた後、jquery サイトと animate の定義を再確認したところ、animate のデフォルトの効果が「swing」であることに気付きました。したがって、コードを次のように修正しました。
animateItem: function (self, speed) {
var $item = $(self.settings.itemClass).first();
var width = $item.outerWidth(true);
var left = parseInt($item.css("left"));
if (left < 0) {
self.moveItem(self, speed, 1);
} else {
$item.animate({ "left": "-" + width + "px" }, {
duration: speed,
easing: "linear",
step: function (now, fx) {
$(self.settings.itemClass + ":gt(0)").css("left", now);
}
});
}
},
moveItem: function (self, speed, count) {
if (count > 0) {
var $item = $(self.settings.itemClass).first();
$item.hide(speed, "linear", function () {
$(this).appendTo(self.settings.itemContainerClass).show(speed, "linear");
self.moveItem(self, speed, count - 1); // Repeat
});
}
},
これは、オブジェクトがどのように見えるかを理解するために、単一のオブジェクトをアニメーション化するだけです.htmlは次のとおりです:)
<div id="carousel" class="carousel">
<div class="carousel-container">
<div class="carousel-item yellow">
<div class="carousel-photo">
<img src="http://www.csupomona.edu/~ieee/profile/2012/uman.png" />
</div>
<p>Hicks, Bill</p>
</div>
<div class="carousel-item green">
<div class="carousel-photo">
<img src="http://www.csupomona.edu/~ieee/profile/2012/uman.png" />
</div>
<p>Jeremy, Ron</p>
</div>
<div class="carousel-item blue">
<div class="carousel-photo">
<img src="http://www.csupomona.edu/~ieee/profile/2012/uman.png" />
</div>
<p>Little, John</p>
</div>
<div class="carousel-item violet">
<div class="carousel-photo">
<img src="http://www.csupomona.edu/~ieee/profile/2012/uman.png" />
</div>
<p>Smith, Will</p>
</div>
<div class="carousel-item purple">
<div class="carousel-photo">
<img src="http://www.csupomona.edu/~ieee/profile/2012/uman.png" />
</div>
<p>Shakespear, William</p>
</div>
<div class="carousel-item pink">
<div class="carousel-photo">
<img src="http://www.csupomona.edu/~ieee/profile/2012/uman.png" />
</div>
<p>Jameson, Jenny</p>
</div>
</div>
</div>
常にアニメーション化するために、次の関数を作成しました。
animateWheel: function (self, speed, count) {
var $item = $(self.settings.itemClass).first();
var width = $item.outerWidth(true);
$item.animate({ "left": "-" + width + "px" }, {
duration: speed,
easing: "linear",
step: function (now, fx) {
$(self.settings.itemClass + ":gt(0)").css("left", now);
},
complete: function () {
self.moveItem(self, speed, count);
}
});
},
そして、私のオプションは次のようになります。
defaults = {
itemsPerPage: 4.5,
itemContainerClass: '.carousel-container',
itemClass: '.carousel-item',
startButton: '#start',
carouselPage: '#carouselPage',
contentElement: '.ui-content'
};
うまくいけば、それが同じ問題を抱えている他の誰かに何をすべきかについてのアイデアを与えるでしょう:)私の次の段階は、アニメーションが止まる前に(連続ループのために)アニメーションを遅くすることです