Я занимаюсь разработкой веб-приложения HTML5 для мобильных устройств и столкнулся с небольшим количеством проблем с плавной анимацией.
По сути, когда пользователь нажимает кнопку, ящик (div с высотой: 0px) долженанимировать до заданной высоты (в пикселях), и содержимое будет добавлено в этот ящик.Если у вас есть аккаунт Pinterest, вы можете увидеть анимацию в том виде, в каком она есть сейчас, по адресу http://m.pinterest.com (нажмите кнопку «Комментарий» или «Повтор»).
К сожалению, проблема заключается в том, что на мобильных устройствах переходы Webkitне являются аппаратно-ускоренным свойством высоты, поэтому оно чрезвычайно запаздывает и анимация неровная.
Вот некоторые фрагменты кода:
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 (используя 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);
});
Скриншоты : http://imgur.com/nGcnS,btP3W
ЗдесьВот те проблемы, с которыми я столкнулся при работе с Webkit Transforms, которые я не могу понять:
- Преобразования Webkit масштабируют дочерние элементы контейнера, что нежелательно для того, что я пытаюсь сделать.
-webkit-transform: none
, примененное к детям, похоже, не сбрасывает это поведение. - Преобразования Webkit не перемещают элементы одного уровня.Таким образом, контейнер
.pin
после того, над которым мы работаем, не перемещается автоматически.Это можно исправить вручную, но это хлопотно.
Спасибо большое!