Skip to content

Instantly share code, notes, and snippets.

Revisions

  1. @invalid-email-address Anonymous created this gist Oct 31, 2014.
    10 changes: 10 additions & 0 deletions Header-Footer-Parallax-Effect.markdown
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,10 @@
    Header/Footer Parallax Effect
    -----------------------------
    - A small example of how to create a simple parallax.
    - In the example we have a header size of the screen (window), that can be used as a slide.
    - The size of the content is dynamic and fully customized.
    - The size of the footer is define the [main.js](https://github.com/hudsonmarinho/header-and-footer-parallax-effect/blob/master/assets/stylesheets/main.css#L48) file.

    A [Pen](http://codepen.io/hudsonmarinho/pen/FHGeK) by [Hudson Marinho](http://codepen.io/hudsonmarinho) on [CodePen](http://codepen.io/).

    [License](http://codepen.io/hudsonmarinho/pen/FHGeK/license).
    17 changes: 17 additions & 0 deletions index.html
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,17 @@
    <div id="scroll-animate">
    <div id="scroll-animate-main">
    <div class="wrapper-parallax">
    <header>
    <h1>Header</h1>
    </header>

    <section class="content">
    <h1>Content</h1>
    </section>

    <footer>
    <h1>Footer</h1>
    </footer>
    </div>
    </div>
    </div>
    56 changes: 56 additions & 0 deletions script.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    function scrollFooter(scrollY, heightFooter)
    {
    console.log(scrollY);
    console.log(heightFooter);

    if(scrollY >= heightFooter)
    {
    $('footer').css({
    'bottom' : '0px'
    });
    }
    else
    {
    $('footer').css({
    'bottom' : '-' + heightFooter + 'px'
    });
    }
    }

    $(window).load(function(){
    var windowHeight = $(window).height(),
    footerHeight = $('footer').height(),
    heightDocument = (windowHeight) + ($('.content').height()) + ($('footer').height()) - 20;

    // Definindo o tamanho do elemento pra animar
    $('#scroll-animate, #scroll-animate-main').css({
    'height' : heightDocument + 'px'
    });

    // Definindo o tamanho dos elementos header e conteúdo
    $('header').css({
    'height' : windowHeight + 'px',
    'line-height' : windowHeight + 'px'
    });

    $('.wrapper-parallax').css({
    'margin-top' : windowHeight + 'px'
    });

    scrollFooter(window.scrollY, footerHeight);

    // ao dar rolagem
    window.onscroll = function(){
    var scroll = window.scrollY;

    $('#scroll-animate-main').css({
    'top' : '-' + scroll + 'px'
    });

    $('header').css({
    'background-position-y' : 50 - (scroll * 100 / heightDocument) + '%'
    });

    scrollFooter(scroll, footerHeight);
    }
    });
    106 changes: 106 additions & 0 deletions style.css
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,106 @@
    #scroll-animate
    {
    overflow: hidden;
    }

    #scroll-animate-main
    {
    width: 100%;
    left: 0;
    position: fixed;
    }

    #heightPage,
    #heightScroll
    {
    width: 10px;
    top: 0;
    position: absolute;
    z-index: 99;
    }

    #heightPage
    {
    left: 0;
    }

    #heightScroll
    {
    right: 0;
    }

    header
    {
    width: 100%;
    height: 100%;
    background: url(http://www.hudsonmarinho.com/lab/header-and-footer-parallax-effect/bg-header.jpg) no-repeat 50% 50%;
    top: 0;
    position: fixed;
    z-index: -1;
    }

    footer
    {
    width: 100%;
    height: 300px;
    background: gray;
    bottom: -300px;
    position: fixed;
    z-index: -1;
    }

    .content
    {
    height: 1000px;
    min-height: 1000px;
    background: #ededed;
    position: relative;
    z-index: 1;
    }

    .wrapper-parallax {
    margin-top: 100%;
    margin-bottom: 300px;
    box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.5);
    }

    h1{
    width: 100%;
    height: 100%;
    padding: 0;
    margin: 0;
    text-transform: uppercase;
    text-align: center;
    font-family: Helvetica;
    font-size: 150px;
    color: #fff;
    }

    header h1{}

    .content h1{
    line-height: 1000px;
    color: #999;
    }

    footer h1
    {
    line-height: 300px;
    }

    header,
    footer,
    #scroll-animate-main
    {
    -webkit-transition-property: all;
    -moz-transition-property: all;
    transition-property: all;

    -webkit-transition-duration: 0.4s;
    -moz-transition-duration: 0.4s;
    transition-duration: 0.4s;

    -webkit-transition-timing-function: cubic-bezier(0, 0, 0, 1);
    -moz-transition-timing-function: cubic-bezier(0, 0, 0, 1);
    transition-timing-function: cubic-bezier(0, 0, 0, 1);
    }