Tôi đang phát triển một ứng dụng web HTML5 cho thiết bị di động và gặp phải một chút rắc rối với hoạt ảnh mượt mà. Về cơ bản, khi người dùng nhấn vào một nút, một ngăn kéo (một div có chiều cao: 0px) sẽ tạo hiệu ứng cho chiều cao đã cho (bằng pixel) và nội dung sẽ được thêm vào ngăn kéo đó. Nếu bạn có tài khoản Pinterest, bạn có thể xem hoạt ảnh như hiện tại, tại http://m.pinterest.com (nhấn vào nút Nhận xét hoặc Lặp lại).Làm thế nào để có chiều cao animate trong CSS hoặc Javascript trên thiết bị di động
Vấn đề không may là trên thiết bị di động, quá trình chuyển đổi Webkit không tăng tốc độ phần cứng, do đó cực kỳ lag và hoạt ảnh bị lởm chởm.
Dưới đây là một số đoạn mã:
HTML: ...
<div class="pin"> <a class="comment_btn mbtn" href="#" title="" ontouchstart="">Comment</a> <div class="comment_wrapper"> <div class="divider bottom_shadow"></div> <div class="comment"> <!-- Content appended here --> </div> <div class="divider top_shadow" style="margin-top: 0"></div> </div> </div> <div class="pin"> ... </div>
CSS:
.comment_wrapper { -webkit-transition: all 0.4s ease-in-out, height 0.4s ease-in-out; position: relative; overflow: hidden; width: 100%; float: left; height: 0; } .comment { background: #f4eeee; margin-left: -10px; padding: 10px; height: 100%; width: 100%; float: left; }
Javascript (sử dụng jQuery):
function showSheet(button, wrapper, height) { // Animate the wrapper in. var css = wrapper.css({ 'height': height + 'px', 'overflow': 'visible', 'margin-bottom': '20px', 'margin-top': '10px' }); button.addClass('pressed'); } $('.comment_btn').click(function() { showSheet($(this), $(this).siblings('.comment_wrapper'), 150); });
Ảnh chụp màn hình: http://imgur.com/nGcnS,btP3W
Dưới đây là những vấn đề tôi gặp phải với Webkit Chuyển dạng mà tôi không thể hình dung ra khá :
- Biến đổi Webkit mở rộng quy mô cho trẻ em của vùng chứa, điều không mong muốn đối với những gì tôi đang cố gắng thực hiện.
-webkit-transform: none
áp dụng cho trẻ em dường như không đặt lại hành vi này. - Chuyển đổi Webkit không di chuyển các phần tử anh chị em. Vì vậy, các container
.pin
sau khi một trong chúng tôi đang hoạt động trên không di chuyển xuống tự động. Điều này có thể được cố định bằng tay, nhưng nó là một rắc rối.
Cảm ơn rất nhiều!
Cảm ơn rất nhiều! Biết điều này khá hữu ích. Tôi khá chắc chắn tôi sẽ xem xét lại tương tác này, nhưng để tham khảo những gì bạn có nghĩa là bằng cách làm cho nó bật lên từ dưới màn hình với biến đổi? –
Đã chỉnh sửa câu trả lời bằng mã ví dụ, ví dụ là bàn phím ảo trượt từ cuối màn hình. – Duopixel
Nếu bạn sử dụng 'translate3d (0, 100%, 0)' nó thậm chí còn nhanh hơn vì tăng tốc phần cứng sẽ khởi động :) – Timo