Advertisement
daencore

Smooth Scroll Script

May 21st, 2020
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. var scroller = {
  4.     config: {
  5.         hoverColor: "#710302",
  6.         bgColor: "#1f2b31",
  7.         opacity: .9
  8.     },
  9.     init: function(){
  10.         var anchor = document.createElement("a");
  11.         var scrollTopButton = ".scroll-top-button";
  12.         var spn = document.createElement("img");
  13.         $(spn).text("^");
  14.         $(anchor).attr({
  15.             href: "#top"
  16.         });
  17.         $(spn).attr({
  18.             id: "up-btn",
  19.             class: scrollTopButton.replace(".",""),
  20.             src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB8AAAATCAYAAABobNZCAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7VpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MDI4MDExNzQwNzIwNjgxMThEQkJGNTAwMDFENjJCODEiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjQ3MDE3RkUzN0M2MTFFMkI5MUNENTYyQzU3ODhFNEUiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjQ3MDE3RkQzN0M2MTFFMkI5MUNENTYyQzU3ODhFNEUiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0MjY1MDg5QjNGMkZFMjExQUM3Q0Q4Nzg2MUU1NkM3RSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMjgwMTE3NDA3MjA2ODExOERCQkY1MDAwMUQ2MkI4MSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Psc29coAAAE7SURBVHjaYvj//z8DmTgOiM8CsTK5ZpBrccR/BDhPrgPIsTgKiH//RwVkhQCpFscA8Y//2AHIAaq0stwNiL/8xw+OAbEQtS13AuKX/4kD24FYgFqW25FgMUkOIMbiF//JA9uAmJ9cy22B+Dkew/8C8R0CDtgKxMKkWu5AhI/bgVgNiE8SEQVixFpuD8TPCBjYg6RekUgHiBCy3IkIi7uAmAlNnwIQnyAiDQjistyRiKAGWcyKI6pkiAiBbci5AEQwQoOakMXdeCxGdsBpIqIAFAKMIA36QPyWQKrugTqSmHJBhsgoUGNiYGD4BsQPGXCDfiAuAeL/DMSBJ0AcCsQn8ai5B8Q/kFPsGRxBTW61K4cjBCZgS3BKaPHVSYHFuHJBH76sBgqBo0DciyU7UeKAw0A8EYiZkeUAAgwAswRZ5V7ztVUAAAAASUVORK5CYII=",
  21.         });
  22.         var bgCol, hoverCol, arrowCol, op;
  23.         if(typeof  conf != "undefined") {
  24.             bgCol = typeof conf.bgColor == "undefined" ? scroller.config.bgColor : conf.bgColor;
  25.             hoverCol = typeof conf.hoverColor == "undefined" ? scroller.config.hoverColor : conf.hoverColor;
  26.             op = typeof conf.opacity == "undefined" ? scroller.config.opacity : conf.opacity;
  27.         } else {
  28.             bgCol =  scroller.config.bgColor;
  29.             hoverCol = scroller.config.hoverColor;
  30.             op = scroller.config.opacity;
  31.         }
  32.         $(anchor).append(spn);
  33.         $("body").prepend(anchor);
  34.         $(anchor).prepend("<a name='top'></a>");
  35.         $(scrollTopButton).css({
  36.             position: "absolute",
  37.             top: "120px",
  38.             right: "40px",
  39.             color: "#fff",
  40.             backgroundColor: bgCol,
  41.             opacity: op,
  42.             webkitTransition: "background 0.4s",
  43.             mozTransition: "background 0.4s",
  44.             msTransition: "background 0.4s",
  45.             transition: "background 0.4s",
  46.             padding:"15px 10px",
  47.             textAlign: "center",
  48.             boxSizing: "content-box"
  49.  
  50.         });
  51.  
  52.         $(scrollTopButton).on("mouseover", function(){
  53.             $(this).css({
  54.                 backgroundColor: hoverCol,
  55.                 opacity: 1
  56.             });
  57.         });
  58.         $(scrollTopButton).on("mouseout", function(){
  59.             $(this).css({
  60.                 color: arrowCol,
  61.                 backgroundColor: bgCol,
  62.                 opacity: op
  63.             });
  64.         });
  65.         this.offset();
  66.     },
  67.     offset: function(){
  68.         var currentWindowHeight = window.innerHeight;
  69.  
  70.         var arrow = $(".scroll-top-button");
  71.  
  72.         arrow.css("display", "none");
  73.  
  74.         $(function() {
  75.             var eTop = $('body').offset().top;
  76.  
  77.             var arrowOffset = arrow.offset().top;
  78.  
  79.             //position of the ele w.r.t window
  80.             $(window).scroll(function() {
  81.                 //when window is scrolled
  82.                 var scrollPosition = eTop - $(window).scrollTop();
  83.                 if (scrollPosition > -200) {
  84.                     arrow.fadeOut("slow");
  85.                 }
  86.                 if (scrollPosition <= -400) {
  87.                     var height = (window.innerHeight - 100);
  88.                     arrow.fadeIn("slow");
  89.                     arrow.css({
  90.                         'position': 'fixed',
  91.                         'display': 'block',
  92.                         'top': height,
  93.                         'z-index': 2
  94.                     });
  95.                 }
  96.             });
  97.         });
  98.         this.scrolls();
  99.     },
  100.     scrolls: function(){
  101.         $('a[href*=\\#]:not([href=\\#])').click(
  102.             function() {
  103.                 if (location.pathname.replace(
  104.                         /^\//, '') == this.pathname.replace(
  105.                         /^\//, '') || location.hostname ==
  106.                     this.hostname) {
  107.                     var target = $(this.hash);
  108.                     target = target.length ? target :
  109.                         $('[name=' + this.hash.slice(1) +
  110.                             ']');
  111.                     if (target.length) {
  112.                         $('html,body').animate({
  113.                             scrollTop: target.offset().top
  114.                         }, 500);
  115.                         return false;
  116.                     }
  117.                 }
  118.             });
  119.     }
  120.  
  121. };
  122.  
  123. $(function(){
  124.     scroller.scrolls();
  125.  
  126.  
  127. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement