Der Code ist ziemlich nah an, was Sie brauchen. Ich denke, das Hauptproblem ist Ihre Stile und verstehen, wie sie mit dem Effekt interagieren.
Der Falzeffekt zeigt oder versteckt Elemente basierend auf ihrem aktuellen Status. Sie haben die Klasse , die Ihre divs mit 0x0 Pixeln startet und versteckt, aber was Sie wirklich wollen, ist eine Regel, die beschreibt, wie Ihre divs aussehen, wenn sie Ihren Benutzern angezeigt werden.
Original:
.fold {
display: none;
width: 0;
height: 0;
position: absolute;
}
Korrigiert:
.fold {
width: 500px;
height: 500px;
position: absolute;
}
Da Ihr .fold
Stil nun den Endstatus des divs beschreiben, ist es nicht mehr eine display: none;
Regel. Da Sie die divs zunächst verborgen sein wollen, sollten Sie einige Javascript hinzufügen, die ursprünglich zu verbergen:
$(".fold").hide();
Statt nun manuell Arten animieren, können Sie die fache Wirkung verwenden:
Original:
// if there is visible fold element on page (user already clicked at least once on link)
if (active.length) {
active.animate({
width: "0"
}, 200)
.animate({
height: "0"
}, 200, function() {
// this happens after above animations are complete
$(this).removeClass("active");
})
// clicking for the first time
}
if (active.attr("id") != page) {
$("#" + page)
.addClass("active")
.animate({
height: "500px"
}, 1000, 'linear')
.animate({
width: "500px"
}, 400, 'linear')
}
Aktualisiert:
if (active.length) {
active.toggle("fold", function() {
$(this).removeClass("active");
});
}
// clicking for the first time
if (active.attr("id") != page) {
$("#" + page)
.addClass("active")
.toggle("fold");
}
Nun, da das alles ist worki ng, ich denke du willst mit einigen Einstellungen spielen. Die documentation for the fold effect zeigt, dass Sie die Größe Ihres Elements, wie es gefaltet ist sowie die Reihenfolge der Faltung festlegen können. Um den von Ihnen geposteten Link nachzuahmen, würde ich size
auf 5 setzen, da Ihre divs einen 5px-Rahmen haben. Ich würde auch horizFirst
zu true
setzen, da das ist, was dein Beispiel zeigt.
Ich entschied mich auch toggleClass
anstelle von addClass("active")
und removeClass("active")
zu verwenden. Dies führte zu einfacheren Einstellungen.
Hier ist das fertige Produkt:
$(".fold").hide();
var foldSettings = {
easing: 'linear',
duration: 1200,
size: 5,
horizFirst: true,
complete: function() {
$(this).toggleClass("active");
}
}
$("a").click(function() {
var page = $(this).data("page");
if ($('div:animated').id != page) {
var active = $(".fold.active");
// if there is visible fold element on page (user already clicked at least once on link)
if (active.length) {
active.toggle("fold", foldSettings);
}
// clicking for the first time
if (active.attr("id") != page) {
$("#" + page).toggle("fold", foldSettings);
}
}
});
http://jsfiddle.net/z69zofxm/3/
Kontrolle dieses http://jsfiddle.net/6jv52yea/ –