div の子をフェードアウトさせてから、div 自体の高さをアニメーション化しようとしていますが、jsFiddle で試しましたが、うまくいかず、奇妙な線が表示されます... 誰か助けてくれますか?
質問する
736 次
3 に答える
1
あなたがやろうとしていることは、このフィドルでキャプチャされていると思います: http://jsfiddle.net/f3Lpv/1/
$(document).ready(function() {
$("#toggleid").click(function() {
var child = $("#child");
if(child.is(":visible")) {
child.fadeTo(500, 0.0, function() {
child.slideUp();
});
$("#toggleid").text("Show");
} else {
child.slideDown(function() {
child.fadeTo(500, 1.0);
});
$("#toggleid").text("Hide");
}
});
});
Chrome でのアーティファクトの問題を回避するために、CSS で下部のパディングを 1px に設定することをお勧めします。これが常に必要なのか、jsFiddle だけで必要なのかは不明です。
body {
padding-bottom:1px;
}
フェードインでのわずかに異なるアニメーション手法については、このフィドル (http://jsfiddle.net/f3Lpv/2/) も参照してください。
于 2012-08-06T20:09:57.870 に答える
0
1つの方法は次のとおりです。
$(function() {
$("#toggleid").click(function(e) {
var mh = $("#mother").height(),
ch = $("#child").outerHeight();
$("#mother").height(mh);
if ($("#child").is(":visible")) {
$("#child").fadeOut(500, function(e) {
$("#mother").animate({ height: mh-ch });
$("#toggleid").text("Show");
});
}
else {
$("#mother").animate({ height: mh+ch }, function(e) {
$("#child").fadeIn(500);
$("#toggleid").text("Hide");
});
};
});
});
でも!より動的にしたい場合は、次のようなものを検討してください。
$(function() {
$(".toggleClass").live("click", function(e) {
var $this = $(this),
$mother = $this.parent(),
$child = $this.siblings("div"), // maybe replace with Css Class ".child"
mh = $mother.height(),
ch = $child.outerHeight();
$mother.height(mh);
if ($child.is(":visible")) {
$child.fadeOut(500, function(e) {
$mother.animate({ height: mh-ch });
$this.text("Show");
});
}
else {
$mother.animate({ height: mh+ch }, function(e) {
$child.fadeIn(500);
$this.text("Hide");
});
};
});
});
于 2012-08-06T19:56:17.993 に答える
0
Steve Campbell の素晴らしい回答に基づいて、代わりに jsfiddle use jquery プラグインを更新しました。
使用法:child.smoothFadeIn();
およびchild.smoothFadeOut();
(function ($) {
$.fn.smoothFadeOut = function () {
var selector = this;
selector.slideDown(function () {
selector.fadeTo(500, 1.0);
});
};
$.fn.smoothFadeIn = function () {
var selector = this;
selector.fadeTo(500, 0.0, function () {
selector.slideUp();
});
};
}(jQuery));
于 2014-09-24T20:17:14.987 に答える