Tutorial Pemrograman

Cara Membuat Animasi Indicator Arrow Scroll dengan CSS dan jQuery

Sebagai alternatif dari Javascript, kehadiran jQuery pada sektor front-end suatu website tentunya memberikan keunikannya tersendiri. Jika Javascript tidak memiliki layout build-in sebagai subsider / dasar penopang dari CSS, maka jQuery memiliki build-in tersebut, bahkan penggunaannya sendiri bisa saja tidak memerlukan bantuan bahasa front-end lainnya seperti CSS maupun SCSS. Selain kelebihan di bagian built-in, fungsi dasar dari jQuery (mulai dari pemanggilan obyek, animasi, dan sebagainya) hampir sama dengan Javascript, dimana hanya dibedakan oleh cara pemanggilannya yang selalu dimulai dengan simbol dollar ($).

Sebagai salah satu penerapan dari aspek animasi pada bahasa pemrograman terkait, maka pada artikel kali ini, kita akan mencoba untuk membuat animasi scroll dengan menggunakan sebuah obyek sebagai pemicu (/trigger) dari animasi yang akan kita terapkan menggunakan bahasa pemrograman CSS dan jQuery.

Langkah:

1. Persiapkan text editor (notepad, sublime text, dan sebagainya) sebagai media pengetikan syntax nantinya.

2. Buatlah file yang bernama index.html yang berisikan kode sebagai berikut:

<html>
<head>
  <title>Inwepo Slick Split Slideshow</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  <style>
  </style>
</head>
<body>
  <script>
  </script>
</body>
</html>

3. Pada bagian <style>, masukkan kode berikut:

* {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

html, body {
  height:100%;
}

body {
  margin:0;
  background:#14b5d1;
  font-size:1.3em;
  color:#333;
  font-family:'Open Sans', sans-serif;
}

section {
  float:left;
  width:100%;
  background:#fff;
  position:relative;
  box-shadow:0 0 5px 0px #333;
}

.arrow-wrap {
  position:absolute;
  z-index:1;
  left:50%;
  top:-5em;
  margin-left:-5em;
  background:#111;
  width:10em;
  height:10em;
  padding:4em 2em;
  border-radius:50%;
  font-size:0.5em;
  display:block;
  box-shadow:0px 0px 5px 0px #333;
}

.arrow {
  float:left;
  position:relative;
  width: 0px;
  height: 0px;
  border-style: solid;
  border-width: 3em 3em 0 3em;
  border-color: #ffffff transparent transparent transparent;
  -webkit-transform:rotate(360deg)
}

.arrow:after {
  content:'';
  position:absolute;
  top:-3.2em;
  left:-3em;
  width: 0px;
  height: 0px;
  border-style: solid;
  border-width: 3em 3em 0 3em;
  border-color: #111 transparent transparent transparent;
  -webkit-transform:rotate(360deg)
}

.arrow-wrap:hover .hint {
  opacity:1;
}

@-webkit-keyframes arrows {
  0% { top:0; }
  10% { top:12%; }
  20% { top:0; }
  30% { top:12%; }
  40% { top:-12%; }
  50% { top:12%; }
  60% { top:0; }
  70% { top:12%; }
  80% { top:-12%; }
  90% { top:12%; }
  100% { top:0; }
}
  
.arrow-wrap .arrow {
  -webkit-animation: arrows 2.8s 0.4s;
  -webkit-animation-delay: 3s;
}

header {
  float:left;
  width:100%;
  padding:2em 4em;
  color:#fff;
  height:calc(100% - 3em);
}

header h1 {
  margin:0;
}

header h3 {
  margin:0;
  color: #56dcee ;
}

.content {
  float:left;
  width:70%;
  margin:0 15%;
  padding:2em 0;
}

h1 {
  font-family:'Segoe UI', sans-serif;
  font-weight:300;
  font-size:2.4em;
}

h3 {
  font-family:'Segoe UI', sans-serif;
  font-weight:300;
  font-size:1.5em;
  margin-top:2em;
}

p {
  color:#555;
  font-size:0.9em;
}

Nantinya, bagian <style> akan memiliki struktur kode sebagai berikut:

<style>
* {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

html, body {
  height:100%;
}

body {
  margin:0;
  background:#14b5d1;
  font-size:1.3em;
  color:#333;
  font-family:'Open Sans', sans-serif;
}

section {
  float:left;
  width:100%;
  background:#fff;
  position:relative;
  box-shadow:0 0 5px 0px #333;
}

.arrow-wrap {
  position:absolute;
  z-index:1;
  left:50%;
  top:-5em;
  margin-left:-5em;
  background:#111;
  width:10em;
  height:10em;
  padding:4em 2em;
  border-radius:50%;
  font-size:0.5em;
  display:block;
  box-shadow:0px 0px 5px 0px #333;
}

.arrow {
  float:left;
  position:relative;
  width: 0px;
  height: 0px;
  border-style: solid;
  border-width: 3em 3em 0 3em;
  border-color: #ffffff transparent transparent transparent;
  -webkit-transform:rotate(360deg)
}

.arrow:after {
  content:'';
  position:absolute;
  top:-3.2em;
  left:-3em;
  width: 0px;
  height: 0px;
  border-style: solid;
  border-width: 3em 3em 0 3em;
  border-color: #111 transparent transparent transparent;
  -webkit-transform:rotate(360deg)
}

.arrow-wrap:hover .hint {
  opacity:1;
}

@-webkit-keyframes arrows {
  0% { top:0; }
  10% { top:12%; }
  20% { top:0; }
  30% { top:12%; }
  40% { top:-12%; }
  50% { top:12%; }
  60% { top:0; }
  70% { top:12%; }
  80% { top:-12%; }
  90% { top:12%; }
  100% { top:0; }
}
  
.arrow-wrap .arrow {
  -webkit-animation: arrows 2.8s 0.4s;
  -webkit-animation-delay: 3s;
}

header {
  float:left;
  width:100%;
  padding:2em 4em;
  color:#fff;
  height:calc(100% - 3em);
}

header h1 {
  margin:0;
}

header h3 {
  margin:0;
  color: #56dcee ;
}

.content {
  float:left;
  width:70%;
  margin:0 15%;
  padding:2em 0;
}

h1 {
  font-family:'Segoe UI', sans-serif;
  font-weight:300;
  font-size:2.4em;
}

h3 {
  font-family:'Segoe UI', sans-serif;
  font-weight:300;
  font-size:1.5em;
  margin-top:2em;
}

p {
  color:#555;
  font-size:0.9em;
}
</style>

4. Pada bagian <body>, masukkan kode berikut:

<header>
  <h1>Inwepo Scroll Indicator</h1>
  <h3>
    Lorem ipsum color sit amet.
  </h3>
</header>
<section class="main">
<a class="arrow-wrap" href="#content">
<span class="arrow"></span>
</a>
  <div class="content" id="content">
    <h1>Content Section</h1>
    <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce ut imperdiet dolor. Morbi sollicitudin tortor non elit vehicula, fermentum tincidunt eros convallis. Nulla quis massa massa. Donec pretium eu erat sit amet iaculis. Integer elementum commodo libero ut euismod. Quisque a dignissim ante, a mattis nisl. Nullam condimentum, metus sit amet commodo aliquam, justo magna molestie leo, sed faucibus arcu sapien eget metus. Nullam luctus orci ac quam ultricies, eu ultricies turpis sollicitudin. Suspendisse mattis, sapien accumsan luctus ullamcorper, nunc leo mollis sapien, sed commodo ipsum enim ac lacus. Integer eleifend nulla non felis facilisis faucibus. Sed egestas ultricies quam placerat sagittis. Nullam iaculis dui volutpat lorem sagittis, et vestibulum nibh dictum. Vivamus sagittis scelerisque nisl id luctus. Nunc leo eros, lobortis eget pretium nec, elementum in dolor.
    </p>
    <p>
    Praesent mauris velit, blandit sit amet pellentesque pharetra, rhoncus et nisl. Cras neque augue, vulputate a nunc ut, convallis vulputate erat. Donec consequat varius elementum. Cras sed aliquet diam. Cras facilisis, risus nec malesuada aliquet, felis eros fringilla nulla, vel accumsan est nibh nec velit. In vitae gravida quam, eu pulvinar libero. Nam non nisi at mi molestie condimentum. Sed auctor elit sit amet risus mollis, quis vestibulum arcu pulvinar. Curabitur pretium.
    </p>
  </div>
</section>

Nantinya, bagian <body> akan memiliki struktur kode sebagai berikut:

<body>
<header>
  <h1>Inwepo Scroll Indicator</h1>
  <h3>
    Lorem ipsum color sit amet.
  </h3>
</header>
<section class="main">
<a class="arrow-wrap" href="#content">
<span class="arrow"></span>
</a>
  <div class="content" id="content">
    <h1>Content Section</h1>
    <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce ut imperdiet dolor. Morbi sollicitudin tortor non elit vehicula, fermentum tincidunt eros convallis. Nulla quis massa massa. Donec pretium eu erat sit amet iaculis. Integer elementum commodo libero ut euismod. Quisque a dignissim ante, a mattis nisl. Nullam condimentum, metus sit amet commodo aliquam, justo magna molestie leo, sed faucibus arcu sapien eget metus. Nullam luctus orci ac quam ultricies, eu ultricies turpis sollicitudin. Suspendisse mattis, sapien accumsan luctus ullamcorper, nunc leo mollis sapien, sed commodo ipsum enim ac lacus. Integer eleifend nulla non felis facilisis faucibus. Sed egestas ultricies quam placerat sagittis. Nullam iaculis dui volutpat lorem sagittis, et vestibulum nibh dictum. Vivamus sagittis scelerisque nisl id luctus. Nunc leo eros, lobortis eget pretium nec, elementum in dolor.
    </p>
    <p>
    Praesent mauris velit, blandit sit amet pellentesque pharetra, rhoncus et nisl. Cras neque augue, vulputate a nunc ut, convallis vulputate erat. Donec consequat varius elementum. Cras sed aliquet diam. Cras facilisis, risus nec malesuada aliquet, felis eros fringilla nulla, vel accumsan est nibh nec velit. In vitae gravida quam, eu pulvinar libero. Nam non nisi at mi molestie condimentum. Sed auctor elit sit amet risus mollis, quis vestibulum arcu pulvinar. Curabitur pretium.
    </p>
  </div>
</section>
</body>

5. Pada bagian <script>, masukkan kode berikut:

$(window).scroll( function(){

  var topWindow = $(window).scrollTop();
  var topWindow = topWindow * 1.5;
  var windowHeight = $(window).height();      
  var position = topWindow / windowHeight;

  position = 1 - position;

  $('.arrow-wrap').css('opacity', position);
});

$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^//,'') == this.pathname.replace(/^//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

Nantinya, bagian <script> akan memiliki struktur kode sebagai berikut:

<script>
$(window).scroll( function(){

  var topWindow = $(window).scrollTop();
  var topWindow = topWindow * 1.5;
  var windowHeight = $(window).height();      
  var position = topWindow / windowHeight;

  position = 1 - position;

  $('.arrow-wrap').css('opacity', position);
});

$(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^//,'') == this.pathname.replace(/^//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});
</script>

6. Save file yang telah dimodifikasi sebelumnya. Lalu, buka file index.html melalui browser kamu. Jika berhasil, nantinya halaman website akan menampilkan tulisan header, dengan menyertakan obyek lingkaran dengan logo anak panah ke bawah sebagai pemicu dari animasi scroll. Tidak lupa, ketika pengguna memicu obyek yang telah ditetapkan, halaman website akan bergeser ke bawah, menuju konten halaman yang telah di tetapkan. Sesuaikan penggunaan animasi arrow scroll dengan website yang telah kamu buat.

Demikian tutorial cara membuat animasi indicator arrow scroll menggunakan bahasa pemrograman CSS dan jQuery. Semoga bermanfaat bagi para pembaca.

Tutorial Lainnya dari Penulis
Komentar

Leave a Reply

Your email address will not be published. Required fields are marked *

Inwepo adalah media platform yang membantu setiap orang untuk belajar dan berbagi tutorial, tips dan trik cara penyelesaian suatu masalah di kehidupan sehari-hari dalam bentuk teks, gambar. dan video.

Dengan bergabung bersama kami dan membuat 1 tutorial terbaik yang kamu miliki dapat membantu jutaan orang di Indonesia untuk mendapatkan solusinya. Ayo berbagi tutorial terbaikmu.

Ikuti Kami di Sosmed!

        

Berlangganan Tutorial Gratis Melalui Email!

Copyright © 2020 Inwepo - All Rights Reserved.

To Top