【发布时间】:2016-11-28 22:26:40
【问题描述】:
我有一个使用 JQuery 和 CSS 将 div 滑入视图的动画。
这是我的 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); }
}
对于需要滑动的 div,我只需应用 slide-up 或 slide-left 等类。
在我的笔记本电脑上它工作正常,但在我的手机 (iPhone) 上,div 已经处于正确的位置,当我向它们滚动时,我看到它们变形了,然后动画到它们应该在的位置。
我不确定我还能如何解释这一点,如果可能的话,试着自己看看,然后慢慢向下滚动网站,你就会看到它。
这是怎么发生的?有解决办法吗?
谢谢!
更新: 问题是,在 iPhone SE 最新 iOS 上的移动 safari 上,应该开始向下放置以便它们可以向上滑动到位的 div 是从正确的位置开始,然后在它们在视图中时向下移动并滑动备份。
【问题讨论】:
-
从您的描述中无法完全清楚问题是什么 - 您能否尝试更详细地解释行为差异?您在 iPhone 上使用什么移动浏览器(和版本)?苹果浏览器?你在其他显示器尺寸上试过吗?
-
@wahwahwah 问题是,在 iPhone SE 最新 iOS 上的移动 safari 上,应该开始向下放置以便它们可以向上滑动到位的 div 从正确的位置开始,然后向下移动并滑动可见时备份。
-
浏览器、css、jQuery、屏幕分辨率(或组合)一定有问题。您是否在 iPhone 上的其他浏览器中尝试过此操作?这是一个响应式网站,但我看不到任何响应式 css.. 或 jQuery... 你在使用框架吗?
-
多个
scroll事件的目的是什么? -
@wahwahwah 使用引导程序。它可以在您的手机上使用吗?
标签: javascript jquery html ios css