У меня есть анимация с использованием JQuery и CSS для разворачивания divs в поле зрения.Ошибка анимации JQuery CSS на мобильном телефоне
Это мой Javascript код:
(function($) {
$.fn.visible = function(partial) {
var $t = $(this),
$w = $(window),
viewTop = $w.scrollTop(),
viewBottom = viewTop + $w.height(),
_top = $t.offset().top,
_bottom = _top + $t.height(),
compareTop = partial === true ? _bottom : _top,
compareBottom = partial === true ? _top : _bottom;
return ((compareBottom <= viewBottom) && (compareTop >= viewTop));
};
})(jQuery);
$(window).scroll(function(event) {
$(".slide-up").each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.addClass("come-up");
}
});
});
$(document).ready(function() {
$(".heading-slide-down").each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.addClass("come-down");
}
});
});
$(window).scroll(function(event) {
$(".slide-left").each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.addClass("come-left");
}
});
});
$(window).scroll(function(event) {
$(".slide-right").each(function(i, el) {
var el = $(el);
if (el.visible(true)) {
el.addClass("come-right");
}
});
});
И это мой CSS
/** FADE IN SLIDING FROM BOTTOM TO TOP **/
.come-up {
transform: translateY(150px);
animation: comeup 0.8s ease forwards;
}
.come-up:nth-child(odd) {
animation-duration: 0.6s;
}
@keyframes comeup {
to { transform: translateY(0); }
}
/** FADE IN SLIDING FROM TOP TO BOTTOM **/
.come-down {
transform: translateY(-100px);
animation: comedown 0.8s ease forwards;
}
.come-down:nth-child(odd) {
animation-duration: 0.6s;
}
@keyframes comedown {
to { transform: translateY(0); }
}
/** FADE IN SLIDING FROM RIGHT TO LEFT **/
.come-left {
transform: translateX(100px);
animation: comeleft 0.8s ease forwards;
}
.come-left:nth-child(odd) {
animation-duration: 0.6s;
}
@keyframes comeleft {
to { transform: translateX(0); }
}
/** FADE IN SLIDING FROM LEFT TO RIGHT **/
.come-right {
transform: translateX(-100px);
animation: comeright 0.8s ease forwards;
}
.come-right:nth-child(odd) {
animation-duration: 0.6s;
}
@keyframes comeright {
to { transform: translateX(0); }
}
С моей дивой, что нужно раздвижной я просто применить классы slide-up
или slide-left
т.д.
Живых demo: http://www.shivampaw.com
На моем ноутбуке он работает отлично, однако на моем телефоне (iPhone) divs уже находятся в правильном положении, и когда я прокручиваю их, я вижу, как они трансформируются, а затем оживляют, где они должны быть.
Я не уверен, как еще я могу это объяснить, если это возможно, попытайтесь взглянуть на себя и просто прокрутите страницу вниз, и вы это увидите.
Как это происходит, и есть ли исправление?
Спасибо!
Update: Проблема заключается в том, что на мобильном сафари на iPhone SE последней прошивку дива, которые должны быть начиная расположены вниз, чтобы они могли скользить вверх на место только начинает в нужном месте, а затем двигается вниз и раздвижная резервное копирование когда они видны.
Это не совсем ясно из вашего описания, что пр oblem - не могли бы вы более подробно объяснить разницу в поведении? Какой мобильный браузер (и версия) вы используете на iPhone? Сафари? Вы пробовали это на других размерах дисплея? – wahwahwah
@wahwahwah Проблема заключается в том, что на мобильном сафари на iPhone iOS iOS iOS последние блоки, которые должны начинаться с позиции вниз, чтобы они могли встать на место, начинаются в нужном месте, а затем перемещаются вниз и скользящая резервная копия, когда они видны. –
Это должно быть проблема с браузером, css, jQuery, разрешением экрана (или комбинацией). Вы пробовали это в другом браузере на своем iPhone? Это отзывчивый сайт, но я не вижу никакого отзывчивого css .. или jQuery ... вы используете фреймворк? – wahwahwah