JQuery / Javascript Непрозрачность анимации с прокруткой - PullRequest
7 голосов
/ 02 января 2012

Я хочу изменить непрозрачность объекта (и анимировать переход) на основе прокрутки пользователя. Пример (http://davegamache.com/)

Я искал везде как здесь, но в итоге он указывает мне на плагин waypoints (http://stackoverflow.com/questions/6316757/opacity-based-on-scroll-position)

Я реализовал плагин [waypoints] [1] и у меня исчез объект, когда он превысит 100px. [Используя атрибут offet], но хотел бы в основном контролировать непрозрачность объекта и сделать анимацию видимой, как в примере выше.

Я обыскал все - это мое последнее средство. Любая помощь с благодарностью.

Ответы [ 5 ]

25 голосов
/ 02 января 2012

рабочий пример с начальной и конечной точкой здесь: http://jsfiddle.net/z7E9u/1/

Я копирую вставить основной код здесь

    var fadeStart=100 // 100px scroll or less will equiv to 1 opacity
    ,fadeUntil=200 // 200px scroll or more will equiv to 0 opacity
    ,fading = $('#fading')
;

$(window).bind('scroll', function(){
    var offset = $(document).scrollTop()
        ,opacity=0
    ;
    if( offset<=fadeStart ){
        opacity=1;
    }else if( offset<=fadeUntil ){
        opacity=1-offset/fadeUntil;
    }
    fading.css('opacity',opacity).html(opacity);
});
13 голосов
/ 02 января 2012

Вот рабочий пример: http://jsfiddle.net/meEf4/

и код:

var target = $('div');
var targetHeight = target.outerHeight();

$(document).scroll(function(e){
    var scrollPercent = (targetHeight - window.scrollY) / targetHeight;
    if(scrollPercent >= 0){
        target.css('opacity', scrollPercent);
    }
});

Все, что нам нужно сделать, - это взять текущую позицию прокрутки окна, выяснить, какой процент рассматриваемого элемента теперь находится вне экрана, и установить его непрозрачность с этим процентом.

1 голос
/ 18 марта 2017

Поскольку у меня репутация ниже 50, я не могу ответить на вопрос Лонута, как сделать обратное.Вот мой код, если вы хотите обратное, очень удобно для панелей навигации.

$(window).scroll(function () {
        var offset = $(document).scrollTop()
        var opacity = 0;
        if (offset <= 0) {
            opacity = 0;
        } else if (offset > 0 & offset <= 200) {
            opacity = (offset - 1) / 200;
        }
        else {
            opacity = 1;
        }
        $('.black-background').css('opacity', opacity).html(opacity);
    });
0 голосов
/ 24 марта 2015

Мне нравится это решение

var fadeStart=100 // 100px scroll or less will equiv to 1 opacity
   ,fadeUntil=200 // 200px scroll or more will equiv to 0 opacity
   ,fading = $('#fading')
;

$(window).bind('scroll', function(){
    var offset = $(document).scrollTop()
        ,opacity=0
    ;
    if( offset<=fadeStart ){
        opacity=1;
    }else if( offset<=fadeUntil ){
        opacity=1-offset/fadeUntil;
    }
    fading.css('opacity',opacity).html(opacity);
});

Как можно использовать прокрутку мыши ТОЛЬКО до исчезновения, например, до достижения непрозрачности 0,2, а затем прокрутить страницу тоже?Решения, которые я нашел до сих пор, полностью отключают функцию прокрутки мыши

0 голосов
/ 02 января 2012

Я посмотрел исходный код этого сайта. он использует: $(document).scrollTop(); для определения высоты прокрутки и $(window).scroll(function(){}) для привязки прослушивателя событий к прокрутке.

попробуйте это:

$(window).scroll(function(){
    var fromtop = $(document).scrollTop();       // pixels from top of screen
    $('#fademeout').css({opacity: 100-fromtop}); // use a better formula for better fading
});
...