Halo semuanya, kali ini kita akan membahas tentang Library Javascript yang bernama Particle JS. Bagi para pengembang website, tentu sudah tidak asing lagi dengan kata Library. Tujuan para pengembang website menggunakan library javascript adalah untuk menambahkan fitur untuk project yang dikerjakan nya. Dengan adanya library javascript, tentu sangat membantu para pengembang website dalam menyelesaikan project nya. Sebelum memasuki tutorial nya, kita akan membahas sedikit tentang Particle JS ini.
Particle JS merupakan sebuah library javascript yang bentuk nya seperti partikel, sesuai dengan namanya Particle JS. Particle JS ini dibuat oleh Vincent Garreau. Particle JS juga salah satu library javascript yang ringan dan bersifat open source, sehingga siapapun bisa menggunakan nya. Bagaimana cara menggunakan nya ? Simak tutorial nya dibawah ini.
Cara Menggunakan Particle JS
1. Kunjungi halaman resmi nya, yaitu https://vincentgarreau.com/particles.js/
2. Kamu bisa memilih untuk cara penggunaa nya, bisa offline (download) dan bisa juga online melalui (github)
3. Contoh disini saya akan menggunakan github untuk menggunakan particle js nya.
4. Pertama kita akan membuat file css nya terlebih dahulu, Berikut ini adalah kodingan untuk css nya
/* ============================================================================= HTML5 CSS Reset Minified - Eric Meyer ========================================================================== */ html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent} body{line-height:1} article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block} nav ul{list-style:none} blockquote,q{quotes:none} blockquote:before,blockquote:after,q:before,q:after{content:none} a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent;text-decoration:none} mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold} del{text-decoration:line-through} abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help} table{border-collapse:collapse;border-spacing:0} hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0} input,select{vertical-align:middle} li{list-style:none} html,body{ width:100%; height:100%; background:#111; } html{ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } body{ font:normal 75% Arial, Helvetica, sans-serif; } canvas{ display:block; vertical-align:bottom; } /* ---- stats.js ---- */ #stats, .count-particles{ -webkit-user-select: none; margin-top: 5px; margin-left: 5px; } #stats{ border-radius: 3px 3px 0 0; overflow: hidden; } /* ---- particles.js container ---- */ #particles-js{ width: 100%; height: 100%; background-color: #b61924; background-image: url(''); background-size: cover; background-position: 50% 50%; background-repeat: no-repeat; }
5. Setelah membuat file css, jangan lupa untuk import css nya ke halaman index.html. Untuk halaman index.html nya, kita tambahkan kodingan dibawah ini
<div id="particles-js"></div> <script src="particles.js"></script> <script src="app.js"></script> <script src="stats.js"></script>
6. Selanjutnya kita akan membuat file javascript nya untuk app.js , particles.js , dan stats.js. Berikut ini adalah kodingan kodingan nya
particlesJS('particles-js', { "particles": { "number": { "value": 80, "density": { "enable": true, "value_area": 800 } }, "color": { "value": "#ffffff" }, "shape": { "type": "circle", "stroke": { "width": 0, "color": "#000000" }, "polygon": { "nb_sides": 5 }, "image": { "src": "img/github.svg", "width": 100, "height": 100 } }, "opacity": { "value": 0.5, "random": false, "anim": { "enable": false, "speed": 1, "opacity_min": 0.1, "sync": false } }, "size": { "value": 5, "random": true, "anim": { "enable": false, "speed": 40, "size_min": 0.1, "sync": false } }, "line_linked": { "enable": true, "distance": 150, "color": "#ffffff", "opacity": 0.4, "width": 1 }, "move": { "enable": true, "speed": 6, "direction": "none", "random": false, "straight": false, "out_mode": "out", "attract": { "enable": false, "rotateX": 600, "rotateY": 1200 } } }, "interactivity": { "detect_on": "canvas", "events": { "onhover": { "enable": true, "mode": "repulse" }, "onclick": { "enable": true, "mode": "push" }, "resize": true }, "modes": { "grab": { "distance": 400, "line_linked": { "opacity": 1 } }, "bubble": { "distance": 400, "size": 40, "duration": 2, "opacity": 8, "speed": 3 }, "repulse": { "distance": 200 }, "push": { "particles_nb": 4 }, "remove": { "particles_nb": 2 } } }, "retina_detect": true, "config_demo": { "hide_card": false, "background_color": "#b61924", "background_image": "", "background_position": "50% 50%", "background_repeat": "no-repeat", "background_size": "cover" } } );
var Stats = function () { var startTime = Date.now(), prevTime = startTime; var ms = 0, msMin = Infinity, msMax = 0; var fps = 0, fpsMin = Infinity, fpsMax = 0; var frames = 0, mode = 0; var container = document.createElement( 'div' ); container.id = 'stats'; container.addEventListener( 'mousedown', function ( event ) { event.preventDefault(); setMode( ++ mode % 2 ) }, false ); container.style.cssText = 'width:80px;opacity:0.9;cursor:pointer'; var fpsDiv = document.createElement( 'div' ); fpsDiv.id = 'fps'; fpsDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#002'; container.appendChild( fpsDiv ); var fpsText = document.createElement( 'div' ); fpsText.id = 'fpsText'; fpsText.style.cssText = 'color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'; fpsText.innerHTML = 'FPS'; fpsDiv.appendChild( fpsText ); var fpsGraph = document.createElement( 'div' ); fpsGraph.id = 'fpsGraph'; fpsGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0ff'; fpsDiv.appendChild( fpsGraph ); while ( fpsGraph.children.length < 74 ) { var bar = document.createElement( 'span' ); bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#113'; fpsGraph.appendChild( bar ); } var msDiv = document.createElement( 'div' ); msDiv.id = 'ms'; msDiv.style.cssText = 'padding:0 0 3px 3px;text-align:left;background-color:#020;display:none'; container.appendChild( msDiv ); var msText = document.createElement( 'div' ); msText.id = 'msText'; msText.style.cssText = 'color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px'; msText.innerHTML = 'MS'; msDiv.appendChild( msText ); var msGraph = document.createElement( 'div' ); msGraph.id = 'msGraph'; msGraph.style.cssText = 'position:relative;width:74px;height:30px;background-color:#0f0'; msDiv.appendChild( msGraph ); while ( msGraph.children.length < 74 ) { var bar = document.createElement( 'span' ); bar.style.cssText = 'width:1px;height:30px;float:left;background-color:#131'; msGraph.appendChild( bar ); } var setMode = function ( value ) { mode = value; switch ( mode ) { case 0: fpsDiv.style.display = 'block'; msDiv.style.display = 'none'; break; case 1: fpsDiv.style.display = 'none'; msDiv.style.display = 'block'; break; } }; var updateGraph = function ( dom, value ) { var child = dom.appendChild( dom.firstChild ); child.style.height = value + 'px'; }; return { REVISION: 12, domElement: container, setMode: setMode, begin: function () { startTime = Date.now(); }, end: function () { var time = Date.now(); ms = time - startTime; msMin = Math.min( msMin, ms ); msMax = Math.max( msMax, ms ); msText.textContent = ms + ' MS (' + msMin + '-' + msMax + ')'; updateGraph( msGraph, Math.min( 30, 30 - ( ms / 200 ) * 30 ) ); frames ++; if ( time > prevTime + 1000 ) { fps = Math.round( ( frames * 1000 ) / ( time - prevTime ) ); fpsMin = Math.min( fpsMin, fps ); fpsMax = Math.max( fpsMax, fps ); fpsText.textContent = fps + ' FPS (' + fpsMin + '-' + fpsMax + ')'; updateGraph( fpsGraph, Math.min( 30, 30 - ( fps / 100 ) * 30 ) ); prevTime = time; frames = 0; } return time; }, update: function () { startTime = this.end(); } } }; if ( typeof module === 'object' ) { module.exports = Stats; }
7. Jika sudah semua, kamu jalankan dan lihat hasilnya. Contoh punya saya
Demo