【发布时间】:2014-08-12 08:28:34
【问题描述】:
我有一些元素在滚动时出现/消失在屏幕边缘(隐藏)。我可以为它们制作动画,但问题是页面加载时的开始。我不能在页面加载时做同样的效果......如果有人可以帮助如何做到这一点。
$(document).ready(function() {
$('body').hide();
$('.avatar').css('opacity', 0);
$('.avatar img').css('width', '0vw', 'height', '0vw', 'margin-left', '50%', 'margin-top', '50%');
$('.intro').css('opacity', 0, 'margin-top', '20%');
$('.signature').css('opacity', 0, 'top', '75%');
//calling jPreLoader
$('body').jpreLoader({
showSplash: false,
showPercentage: true,
loaderVPos: '10%',
autoClose: true,
}, function() { //callback function
$('body').fadeIn(50);
});
// scroll effect
function visibleHideme() {
$('#home').each(function() {
var half_of_object = $(this).offset().top + ($(this).outerHeight() / 4);
var top_of_window = $(window).scrollTop();
var bottom_of_window = $(window).scrollTop() + $(window).height();
if (half_of_object < top_of_window) {
$('.avatar').delay(700).css({
'opacity': '0'
});
$('.avatar img').delay(800).css({
'margin-top': '50%',
'margin-left': '50%',
'width': '0vw',
'height': '0vw'
});
$('.intro').css({
'opacity': '0',
'margin-top': '20%'
});
$('.signature').delay(1000).css({
'opacity': '0',
'top': '75%'
});
}
if (half_of_object > bottom_of_window) {
$('.avatar').delay(700).css({
'opacity': '0'
});
$('.avatar img').delay(800).css({
'margin-top': '50%',
'margin-left': '50%',
'width': '0vw',
'height': '0vw'
});
$('.intro').css({
'opacity': '0',
'margin-top': '20%'
});
$('.signature').delay(1000).css({
'opacity': '0',
'top': '75%'
});
} else if (half_of_object > top_of_window && half_of_object < bottom_of_window) {
$('.avatar').delay(700).css({
'opacity': '1'
});
$('.avatar img').delay(800).css({
'margin-top': '0%',
'margin-left': '0%',
'width': '25vw',
'height': '25vw'
});
$('.intro').css({
'opacity': '1',
'margin-top': '5%'
});
$('.signature').delay(1000).css({
'opacity': '1',
'top': '60%'
});
}
});
}
visibleHideme();
$(window).scroll(function() {
visibleHideme();
});
});
#home {
min-height: 100vh;
}
#home .intro {
opacity: 0;
position: relative;
margin-left: 25%;
margin-top: 20%;
width: 65%;
text-align: left;
}
#home .avatar {
opacity: 0;
position: absolute;
left: 7%;
top: 35%;
width: 350px;
width: 25vw;
height: 350px;
height: 25vw;
}
#home .avatar img {
position: relative;
width: 0px;
width: 0vw;
height: 0px;
height: 0vw;
margin-left: 50%;
margin-top: 50%;
border: 5px solid rgba(0, 0, 0, 0.5);
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
}
#home .signature {
opacity: 0;
position: absolute;
left: 70%;
top: 75%;
width: 200px;
height: 124px;
}
<div class="section" id="home">
<div class="avatar"><img src="uploads/avatar2.jpg" alt="IL Avatar" /></div>
<img class="signature" src="uploads/signature.png" alt="Sign" />
<div class="intro">This is a text...</div>
</div>
在上述情况下,页面以正常的不透明动画加载,元素不会像在屏幕边缘滚动时那样做。
如果我添加回调函数动画(就在“body”淡入之后),元素首先以正常的不透明动画出现,然后它们执行动画......我正在谈论以下附加代码:
$('.avatar').animate({'opacity':1}, 600, 'easeInCirc');
$('.avatar img').delay(100).animate({'width':'25vw','height':'25vw','margin-left':'0%','margin-top':'0%'}, 700, 'easeOutBounce');
$('.intro').delay(500).animate({'opacity':1,'margin-top':'5%'}, 600, 'easeInCirc');
$('.signature').delay(800).animate({'opacity':1,'top':'60%'}, 800, 'easeInCirc');
在这里直播:http://photography.igorlaszlo.com/test2.html 如果有人可以帮助我...
【问题讨论】:
-
试图了解你的程序流程......你的 dom 被加载......调用
visibleHideMe- 它处理你想要做的所有 css 东西......在你的问题中你说你想要在页面加载时做这些事情......并且您正在调用$(document).ready函数中的函数......我有点困惑 -
你到底想用
$('.avatar').animate({'opacity':1}, 600, 'easeInCirc'); $('.avatar img').delay(100).animate({'width':'25vw','height':'25vw','margin-left':'0%','margin-top':'0%'}, 700, 'easeOutBounce'); $('.intro').delay(500).animate({'opacity':1,'margin-top':'5%'}, 600, 'easeInCirc'); $('.signature').delay(800).animate({'opacity':1,'top':'60%'}, 800, 'easeInCirc');做什么?它在哪里? -
@ewizard 感谢您的回复!当我滚动头像、文本和签名 img 时,它们会出现效果。头像随着easeOutBounce效果变大,文字从下方出现,签名与文字相同,但稍后。我可以分别做同样的效果。我可以在页面加载时执行此操作,并且我可以在滚动时执行此操作,但不能同时执行。 我希望它们在页面加载时产生这些效果,当我滚动时,它们会以相同的方式消失,而当我再次滚动主页时,它们会以相同的方式出现......
-
好的 - 那么现在会发生什么?您在页面加载时调用
visibleHideMe函数(加载 dom 时) - 会发生什么?这样做有什么不妥? -
所以 - 当你说“再次滚动主页”时 - 你的意思是你已经离开页面 - 只是返回到它?