1 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
原理:先給元素設(shè)置一個(gè)left值讓其隱藏,當(dāng)滾動(dòng)條到一定位置,改變其left值讓其出現(xiàn)。改變幅度與滾動(dòng)幅度正相關(guān)。透明度那個(gè)也是同理。不過(guò),其中要判斷滾動(dòng)條向上滾動(dòng)還是向下滾動(dòng)。我給你實(shí)現(xiàn)了其中一個(gè),另外自己摸索實(shí)踐一下。代碼很粗糙,理解一下,也不要管我在意我的命名,就想快點(diǎn)給你搞出來(lái),所以很粗糙。只考慮實(shí)現(xiàn),沒(méi)考慮性能。DOM操作你可以自行優(yōu)化。
<!DOCTYPE html>
<html>
<head>
<title>ohyeah</title>
<style type="text/css">
#wrapper {height: 100%;overflow: hidden;}
#screen {width: 300px;height: 800px;}
#mark{position: relative;width: 200px;height: 50px;font-size: 40px;left: -100px;}
#cover{position: relative;width: 200px;height: 50px;font-size: 40px;left: 1360px;}
#dialog {position: relative;width: 200px;height: 50px;margin: 0 auto;font-size: 20px;line-height: 50px;opacity: 0;}
#ohyeah {height: 800px;}
</style>
<script src="jquery.js" type="text/javascript"></script>
</head>
<div id="wrapper">
<div id="screen"></div>
<div id="mark">love</div>
<div id="dialog">ooo</div>
<div id="cover">love</div>
<div id="ohyeah"></div>
</div>
<script type="text/javascript">
var beforeScrollTop = $(window).scrollTop();
$(window).scroll(function() {
var afterScrollTop = $(window).scrollTop(),
updown = afterScrollTop - beforeScrollTop;
if( updown === 0 ) return false;
beforeScrollTop = afterScrollTop;
console.log(updown > 0 ? "down" : "up");
var isUpDown = updown > 0 ? "down" : "up"; //判斷往上還是往下
var scrollTop = $(window).scrollTop();
if(isUpDown == 'down' && scrollTop >= 400) { //數(shù)據(jù)自取,可依據(jù)元素的scrollTop值
var markLeft = parseInt($('#mark').css('left'));
left = markLeft + (scrollTop/10); //值的變動(dòng)與滾動(dòng)幅度現(xiàn)相關(guān) , 自行調(diào)節(jié)
if(markLeft <= 640) { //這個(gè)值是讓他滾動(dòng)到一個(gè)邊界 , 自行調(diào)節(jié)
$('#mark').css('left', left + 'px'); //舉例一個(gè)元素,其他的自己來(lái)咯
}
} else if(isUpDown == 'up' && scrollTop <= 700) { //往上時(shí)做相反
var markLeft = parseInt($('#mark').css('left'));
left = markLeft - (scrollTop/10);
if(markLeft >= -100) {
$('#mark').css('left', left + 'px');
}
}
//其他的如opacity left 同理,自己實(shí)踐一下吧
});
</script>
</body>
</html>
添加回答
舉報(bào)