2011-12-06 18 views

Trả lời

8

Something như thế này có thể làm việc:


$("#div").toggle(
function(){ 
    $("#div").animate({ height:"500px" }, { queue:false, duration:500 }); 
}, 
function(){ 
    $("#div").animate({ height:"50px" }, { queue:false, duration:500 }); 
}); 

Thay vì 500px nó chỉ có thể là kích thước ban đầu của div, và 30px có thể tuy nhiên nhiều bạn muốn hiển thị khi nó được ẩn đi.

+0

Cảm ơn rất nhiều! Hai điều: 1) Chúng ta phải khai báo chiều cao div ban đầu luôn luôn? Tôi hỏi điều này vì ... chiều cao có thể khác nhau tùy thuộc vào nội dung. 2) Nếu chúng ta muốn, sau này, phai mờ phần nhỏ mà chúng ta vừa tạo ra, nó sẽ ổn chứ? – MEM

+1

Dưới đây là một fiddle cho thấy rằng nó có thể cho phép chiều cao khác nhau nếu tuyên bố trong một biến: http://jsfiddle.net/Skooljester/HdQSX/ Và mờ dần sau khi hình ảnh động không phải là một vấn đề. –

+0

Cảm ơn bạn rất nhiều vì đã dành thời gian. Khá rõ ràng. ;) – MEM

2

Cách tốt hơn để mở div ở chiều cao ban đầu là sử dụng slideDown(). Vấn đề là chức năng này yêu cầu div phải được ẩn trước khi nó có thể mở nó. Cách sau đây là một chút xấu xí nhưng hoạt động tốt:

$("#test").toggle(
function(){ 
    $("#test").css('height', 'auto').hide().slideDown('fast'); 
}, 
function(){ 
    $("#test").animate({ height:'50px' }, { queue:false, duration:500 }); 
}); 
1

tôi không khuyên bạn sử dụng phương pháp sinh động của jQuery vì nó đôi khi lỗi trong một số trình duyệt. Tạo hiệu ứng cho trang chiếu bằng chuyển tiếp CSS là lựa chọn tốt hơn (theo tôi), bằng cách đặt chiều cao div hoặc chiều cao tối đa.

CSS:

.expandable { 
    max-height: 3em; 
    overflow: hidden; 
    transition: max-height .3s; 
} 

trên nhấp chuột, thiết lập max-height với jQuery:

$(.someSelector).css('max-height', expandedHeight); 

Sau đó, loại bỏ các phong cách khi được nhấp vào một lần nữa:

$(.someSelector).attr('style', ''); 

Bạn có thể nhìn vào this demo example

Các vấn đề liên quan