2012-09-05 22 views
9

Tôi đang sử dụng thư viện zepto cho trang web di động của mình. Gần đây tôi đã biết rằng zepto không có các plugin slideDown() như jquery. Tôi muốn thực hiện tương tự cho zepto.Làm thế nào để thực hiện jquery như slideDown() trong zepto

Tôi đã thử một lần trên jsfiddle (http://jsfiddle.net/goje87/keHMp/1/). Ở đây nó không hoạt hình khi hiển thị phần tử. Nó chỉ nhấp nháy. Làm thế nào để mang lại hình ảnh động?

PS: Tôi không thể cung cấp chiều cao cố định vì tôi sẽ áp dụng plugin này cho các phần tử có đặc tính chiều cao sẽ không được biết.

Cảm ơn bạn đã ủng hộ !!

Trả lời

18

Demo: http://jsfiddle.net/6zkSX/5

JavaScript:

(function ($) { 
    $.fn.slideDown = function (duration) {  
    // get old position to restore it then 
    var position = this.css('position'); 

    // show element if it is hidden (it is needed if display is none) 
    this.show(); 

    // place it so it displays as usually but hidden 
    this.css({ 
     position: 'absolute', 
     visibility: 'hidden' 
    }); 

    // get naturally height 
    var height = this.height(); 

    // set initial css for animation 
    this.css({ 
     position: position, 
     visibility: 'visible', 
     overflow: 'hidden', 
     height: 0 
    }); 

    // animate to gotten height 
    this.animate({ 
     height: height 
    }, duration); 
    }; 
})(Zepto); 

$(function() { 
    $('.slide-trigger').on('click', function() { 
    $('.slide').slideDown(2000); 
    }); 
});​ 
​ 
+0

Cool !! Điều đó hoạt động tuyệt vời ... Cảm ơn @Speransky – Goje87

+0

+1 cho ví dụ làm việc, rất tốt đẹp! – iamwhitebox

5

này đã làm việc cho tôi:

https://github.com/Ilycite/zepto-slide-transition

Các Zepto Plugin Trượt chuyển thêm vào Zepto.js các chức năng dưới đây:

slideDown();

slideUp();

slideToggle();

+0

Đây là triển khai tốt hơn nhiều –

+1

404 Không tìm thấy: ( – andreszs

+0

Nguồn có sẵn mới nhất https://github.com/NinjaBCN/zepto-slide-transition – Feuda

1

câu trả lời Speransky là hữu ích, và tôi đang cung cấp một giải pháp đơn giản cho một danh sách chuyển hướng chung thả xuống, và tách thành slideUp và slideDown trên jsfiddle: http://jsfiddle.net/kUG3U/1/

$.fn.slideDown = function (duration) { 
    // show element if it is hidden (it is needed if display is none) 
    this.show(); 

    // get naturally height 
    var height = this.height(); 

    // set initial css for animation 
    this.css({ 
     height: 0 
    }); 

    // animate to gotten height 
    this.animate({ 
     height: height 
    }, duration); 
}; 
+1

Chỉ cần sửa chữa nhỏ: Nếu phần tử có phần đệm dọc, sau lần gọi đầu tiên chiều cao được tính không chính xác, dẫn đến một đối tượng lớn hơn Để ngăn chặn điều này, sử dụng: 'var height = this.height() - parseInt (this.css ('padding-top')) - parseInt (this.css ('padding -bottom ')); ' – andreszs

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