javascript - 在 inview.js 触发时进行操作

标签 javascript jquery html

我想知道如何操作 inview.js 脚本,它被触发的时刻不是视口(viewport)中的第一个像素,最后一个是元素熄灭的时刻,而是例如晚或早 50 像素。 inview.js 的脚本是

(function ($) {
function getViewportHeight() {
    var height = window.innerHeight; // Safari, Opera
    var mode = document.compatMode;

    if ( (mode || !$.support.boxModel) ) { // IE, Gecko
        height = (mode == 'CSS1Compat') ?
        document.documentElement.clientHeight : // Standards
        document.body.clientHeight; // Quirks
    }

    return height;
}

$(window).scroll(function () {
    var vpH = getViewportHeight(),
        scrolltop = (document.documentElement.scrollTop ?
            document.documentElement.scrollTop :
            document.body.scrollTop),
        elems = [];

    // naughty, but this is how it knows which elements to check for
    $.each($.cache, function () {
        if (this.events && this.events.inview) {
            elems.push(this.handle.elem);
        }
    });

    if (elems.length) {
        $(elems).each(function () {
            var $el = $(this),
                top = $el.offset().top,
                height = $el.height(),
                inview = $el.data('inview') || false;

            if (scrolltop > (top + height) || scrolltop + vpH < top) {
                if (inview) {
                    $el.data('inview', false);
                    $el.trigger('inview', [ false ]);                        
                }
            } else if (scrolltop < (top + height)) {
                if (!inview) {
                    $el.data('inview', true);
                    $el.trigger('inview', [ true ]);
                }
            }
        });
    }
});

// kick the event to pick up any elements already in view.
// note however, this only works if the plugin is included after the elements are bound to 'inview'
$(function () {
    $(window).scroll();
});
})(jQuery);

所有学分转到here

我的尝试是添加一个值来偏移顶部 top = $el.offset().top + 50, 这有效!但是我怎样才能改变自下而上的值(value)呢? 谢谢特德

最佳答案

我建议使用 http://imakewebthings.com/jquery-waypoints/

您可以这样调用它以在距离底部 10% 处达到您想要的效果:

    $('.flyIn').waypoint(function() {
    $(this).removeClass('hidden');
    $(this).addClass('animated fadeInUp');
    }, { offset: '90%' });

关于javascript - 在 inview.js 触发时进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15040386/

相关文章:

javascript - 禁用 HTML5 弹出表单验证消息

javascript - 我无法使用 jQuery CSS 选择器正确选择标题文本

javascript - 根据下拉选择更新图表 - javascript

javascript - 我应该将字符串值存储在变量中还是作为隐藏的输入值

javascript - 使用 jQuery 轻松过滤 HTML 部分

jquery - CSS 和 jQuery slider 高度/定位问题

jQuery DataTables - 英国日期列排序

javascript - 嵌入 JW Player 使用 Parse.com 创建空白屏幕

javascript - 不使用 javascript 隐藏标签 - 用 css 做吗?

javascript - XMLHttpRequest 访问 facebook 开发人员和图