Mã của bạn là khá gần với những gì bạn cần. Tôi nghĩ vấn đề chính là phong cách của bạn và hiểu cách họ tương tác với hiệu ứng.
Hiệu ứng gấp sẽ hiển thị hoặc ẩn các phần tử dựa trên trạng thái hiện tại của chúng. Bạn có lớp học .fold
bắt đầu div của bạn ở 0x0 pixel và ẩn, nhưng những gì bạn thực sự muốn là quy tắc mô tả div của bạn trông như thế nào khi được hiển thị cho người dùng của bạn.
gốc:
.fold {
display: none;
width: 0;
height: 0;
position: absolute;
}
Corrected:
.fold {
width: 500px;
height: 500px;
position: absolute;
}
Kể từ khi phong cách .fold
của bạn bây giờ được mô tả trạng thái cuối divs của bạn, nó không còn có một quy tắc display: none;
. Vì bạn muốn div ban đầu được ẩn, bạn nên thêm một số Javascript để che giấu những bước đầu:
$(".fold").hide();
Bây giờ, thay vì bằng tay sinh động phong cách, bạn có thể sử dụng hiệu ứng gấp:
gốc:
// 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')
}
Cập nhật:
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");
}
Bây giờ tất cả điều đó là gia công ng, tôi nghĩ bạn sẽ muốn chơi với một số cài đặt. Các documentation for the fold effect cho thấy rằng bạn có thể thiết lập kích thước của phần tử của bạn khi nó được gấp lại cũng như thứ tự gấp. Để bắt chước liên kết mà bạn đã đăng, tôi sẽ đặt size
thành 5 vì div của bạn có đường viền 5px. Tôi cũng sẽ đặt horizFirst
thành true
vì đó là ví dụ của bạn.
Tôi cũng quyết định sử dụng toggleClass
thay vì addClass("active")
và removeClass("active")
. Điều này dẫn đến các cài đặt đơn giản hơn.
Dưới đây là các sản phẩm hoàn thiện:
$(".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/
việc kiểm tra này http://jsfiddle.net/6jv52yea/ –