Я пытаюсь показать изображение на прокрутке на основе px на px. Подобно тому, как этот сайт оживляет красную линию, http://www.teslamotors.com/goelectric#. Изображение должно быть скрыто в той же усадьбе, поэтому, если пользователь прокручивается, они будут видеть меньше строки.
Я чувствую, что приближаюсь, но мой javascript не совсем понюхает. Вот URL-адрес того, что я сделал до сих пор, http://trippruitt.com/fuckinLineAnimationBullshit/, и вот мой сценарий. Любая помощь будет очень оценена, спасибо!
init();
/*========== init calls all custom functions ==========*/
function init() {
$(window).on("scroll", scrolling);
console.log("init works");
}
/*========== ========== ==========*/
/*========== get scrollTop ==========*/
function getScrollTop(){
if(typeof pageYOffset!= 'undefined'){
//most browsers except IE before #9
return pageYOffset;
}
else{
var B= document.body; //IE 'quirks'
var D= document.documentElement; //IE with doctype
D= (D.clientHeight)? D: B;
return D.scrollTop;
}
}
/*========== ========== ==========*/
/*========== scrolling function ==========*/
function scrolling() {
console.log(getScrollTop());
if (getScrollTop() > 64) {
addHeight();
}
}
/*========== ========== ==========*/
/*========== add height to line ==========*/
function addHeight() {
$(window).on("scroll", function() {
var i = 0,
line = $(".fuckinLine");
while (i < 209) {
line.css("height", i++ + "px");
event.preventDefault();
console.log("addHeight works");
}
});
}
/*========== ========== ==========*/
Ваша проблема здесь:
function addHeight() {
$(window).on("scroll", function() {
var i = 0,
line = $(".fuckinLine");
while (i < 209) {
line.css("height", i++ + "px");
event.preventDefault();
console.log("addHeight works");
}
});
}
Вы уже установили событие для $(window).on("scroll", function() {
в функции init. Посредством этого вы по существу выполняли функцию addHeight дважды при каждом прокрутке окна.
Это должно сработать для вас:
/*========== scrolling function ==========*/
function scrolling() {
console.log(getScrollTop());
addHeight(getScrollTop());
//Great place for logic to addwidth to make the line move horizontally.
}
/*========== ========== ==========*/
/*========== add height to line ==========*/
function addHeight(newHeight) {
$(".fuckinLine").css("height", newHeight + "px");
}
/*========== ========== ==========*/
Заметьте, я также удалил цикл while. Это приведет к тому, что div будет расти до максимальной высоты после одного прокрутки. Мы хотим, чтобы это увеличивало 1px для каждого пикселя в окне, прокручиваемом.