Center Div

Position Div on scroll

by kapilgopinath

HTML

<div>
            <div class="float-left wid-80">
                <h2>Sticky Element: Scroll Down to See the Effect</h2>
                <p>Scroll down this page to see how  sticky positioning works.</p>
                <div class="sticky">I will stick to the screen when you reach my scroll position</div>

                <p>Some example text..</p>
                <h2>Scroll back up again to "remove" the sticky position.</h2>
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. Cras ac leo purus. Mauris quis diam velit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas...

CSS

div.sticky {
                position: -webkit-sticky;
                position: sticky;
                top: 0;
                background-color: yellow;
                padding: 50px;
                font-size: 20px;
            }
            .float-left{
                float:left;
            }
            .wid-80{
                width:80%
            }
            .wid-20{
                width:20%
            }
            .box{
                width:75%;
                height:250px;
                border: solid 1px;
                margin:20px;
                position: static;
                -webkit-animation-timing-function: ease;
                animation-timing-function: ease;
            }
            .slideUp {
                position: fixed;
                border: solid 1px;
                -webkit-animation-timing-function: ease;
                animation-timing-function: ease;
                animation: mymove 5s;
                
            }
            div.box2{
                -webkit-animation: mymove 5s; /* Safari 4.0 - 8.0 */
                animation: mymove 5s;
            }
            @-webkit-keyframes mymove {
                from {top: 0px;}
                to {top: 50px;}
            }

JavaScript

var elem = document.querySelector('.box2');
   var viewportOffset = elem.getBoundingClientRect();
   console.log(viewportOffset)
    window.onscroll = () => {
      console.log(document.body.scrollTop
      		||document.documentElement.scrollTop + ',' + elem.offsetTop)
      if ((document.body.scrollTop
      		||document.documentElement.scrollTop) > elem.offsetTop) {
          
          document.getElementById("box2").className = "slideUp";
          document.getElementById("box2").
                   setAttribute("style", 
                   `height: ${viewportOffset.height}px;
                    left: ${viewportOffset.left}px;
                    right: ${viewportOffset.right}px;
                    top: ${viewportOffset.top}px;
                    width: ${viewportOffset.width}px;`);
      } else {
          document.getElementById("box2").className = "box"
      }
    }