一页网站的背景反应导航 - 工作脚本

时间:2014-06-27 12:03:39

标签: javascript jquery html css css3

早上好!

我想与您分享我为公司新网站制作的简单脚本。它允许您创建一个浮动导航栏,可以平滑地更改其背景。

目前它正在使用jQuery。我的问题是 - 是否有可能在纯CSS中做到这一点?我之前的想法是制作带溢出的导航容器:隐藏和位置:绝对+菜单,位置:固定。一切都运作良好,直到我意识到Firefox无法处理这种组合。

我等着你的想法:)

以下是代码和预览:

var nav = $('.nav'),
    navHeight = nav.height();

// Duplicate navigation
var navReversed = nav
    .clone(true)
    .addClass('nav-reversed')
    .insertAfter(nav);

var navs = $('.nav'),
    slides = $('.slide');

/* ... */

// onScroll event
$(window).on('scroll resize', function() {
    var scrollTop = $(document).scrollTop(),
        slide;

    // Find first visible slide
    slides.each(function() {
        if ($(this).offset().top > scrollTop)
            return false;

        slide = $(this);
    });

    if (slide.length) {
        var id = '#' + slide.attr('id'),
            slideNext = slide.next('.slide');

        var clipTop = clipBottom = 'auto';

        if (slide.hasClass('slide-reversed')) {
            clipBottom = Math.max(slideNext.offset().top - scrollTop, 0);
        }
        else {
            clipTop = navHeight;

            if (slideNext.length && slideNext.hasClass('slide-reversed')) {
                clipTop = Math.min(slideNext.offset().top - scrollTop, clipTop);
            }
        }

        if (clipTop !== 'auto') {
            clipTop = Math.round(clipTop) + 'px';
        }

        if (clipBottom !== 'auto') {
            clipBottom = Math.round(clipBottom) + 'px';
        }

        navReversed.css('clip', 'rect('+clipTop+',auto,'+clipBottom+',auto)');

        /* ... */
    }
}).trigger('scroll');

完整版:http://jsfiddle.net/greenek/NL7Fh/

Preview

1 个答案:

答案 0 :(得分:0)

您可以尝试复选框hack http://css-tricks.com/the-checkbox-hack/,还有:目标,但您不能高亮显示链接。 http://codepen.io/anon/pen/lqvpA