Rabu, 30 November 2016

jQuery beginer : Manipulasi HTML dan CSS dengan jQuery

jQuery beginer : Manipulasi HTML dan CSS dengan jQuery

Definisi jQuery
jQuery adalah library JavaScript multiplatform yang dirancang untuk memudahkan penyusunan client-side script pada file HTML. Digunakan oleh 60 persen dari 10000 situs web paling banyak dikunjungi di dunia, jQuery adalah library JavaScript yang paling populer saat ini. jQuery merupakan sebuah perangkat lunak bebas sumber terbuka yang berada di bawah lisensi MIT.
Sintaks jQuery dirancang sedemikian rupa untuk memudahkan pengembang website dalam menavigasi dokumen, menyeleksi elemen-elemen DOM, menerapkan animasi, mengaplikasikan events, serta membangun aplikasi AJAX. jQuery juga memampukan developer menciptakan berbagai plugin berbasis library JavaScript. Dengan plugin-plugin tersebut, pengembang situs web mampu menyusun sejumlah abstraksi untuk interaksi dan animasi sederhana, juga beberapa efek yang cukup kompleks dan berbagai widget yang dapat dikonfigurasikan. Karakter library JavaScript yang modular mendukung pengembangan laman web dinamis dengan berbagai fitur dan aplikasi berbasis web (web app).
Fitur-fitur inti jQuery – meliputi penyeleksian, traversal, dan manipulasi elemen-elemen DOM – dimampukan oleh sebuah selector engine (dinamai Sizzle mulai versi 1.3), telah mewujudkan suatu gaya pemrograman baru yang memadukan antara algoritma dan struktur data DOM. Gaya ini telah mempengaruhi arsitektur dari framework JavaScript lainnya seperti YUI v3 dan Dojo, dan di kemudian menstimulasi pengembangan Selectors API standar.
Microsoft dan Nokia membundel jQuery pada platform mereka. Microsoft memasukkannya dalam Visual Studio untuk digunakan dalam framework ASP.NET AJAX dan ASP.NET MVC, sedangkan Nokia mengintegrasikannya dalam platform pengembangan widget Web Run-Time. jQuery juga mulai dipakai pada MediaWiki sejak versi 1.16.
Situs resmi jQuery beralamat di jquery.com. Pengembangannya dikelola oleh jQuery Foundation yang berada di jquery.org. Library ini bisa diunduh di laman jquery.com/download, atau diterapkan melalui sejumlah CDN termasuk Google jQuery CDN.
Membedah jQuery
jQuery, pada intinya, adalah sebuah library yang berfungsi untuk memanipulasi DOM. DOM merupakan representasi struktural dari seluruh elemen pada sebuah laman web. Keberadaan jQuery menjadikan kerja pencarian, penyeleksian, dan manipulasi elemen-elemen DOM menjadi simpel dan mudah. Sebagai contoh, jQuery bisa dipergunakan untuk menemukan sebuah elemen dalam dokumen yang memiliki properti tertentu (misalnya: elemen dengan tag `h1`), kemudian mengubah satu atau beberapa atributnya (misalnya: warna, visibilitas), atau menjadikan elemen tersebut responsif terhadap suatu event (misalnya: klik mouse).
Selain penyeleksian dan manipulasi DOM dasar, jQuery menyajikan sebuah paradigma baru pada penanganan event oleh JavaScript. Penugasan event dan pendefinisian fungsi event callback dapat dilakukan dengan satu langkah dalam satu lokasi di dalam kode. jQuery juga dikembangkan untuk mendayagunakan berbagai fungsionalitas JavaScript yang paling sering dipakai (misalnya: fade in atau fade out ketika menentukan visibilitas elemen, juga bermacam animasi yang dimunculkan dengan memanipulasi properti-properti CSS).

Keuntungan dari pemanfaatan jQuery
1.    Memisahkan JavaScript dan HTML → Tanpa menggunakan atribut-atribut HTML untuk memanggil fungsi Javascript dalam penanganan event, jQuery bisa dipergunakan untuk menangani event dengan script JS saja.
2.    Singkat dan Jelas → jQuery mengutamakan penulisan kode yang singkat dan jelas melalui berbagi fitur seperti fungsi-fungsi yang dapat dirangkaikan (chain-able) dan nama-nama fungsi yang pendek.
3.    Mengatasi masalah kompatibilitas antar-browser → JavaScript engine pada berbagai browser memiliki perbedaan satu sama lain, sehingga script yang berjalan pada suatu browser bisa gagal pada browser lainnya. jQuery mengatasi segala inkonsistensi antar-browser tersebut dan menyajikan antarmuka yang konsisten bekerja pada semua browser.
4.    Ekstensibel → jQuery menjadikan pengembangan framework sangat simpel. Berbagai event, elemen, dan metode baru dapat dengan mudah ditambahkan dan digunakan ulang sebagai plugin.
Fitur-fitur jQuery
jQuery memiliki fitur-fitur sebagai berikut:
Penyeleksian elemen-elemen DOM menggunakan selector engine Sizzle. Sizzle merupakan perangkat lunak multiplatform sumber terbuka yang berawal sebagai proyek sampingan jQuery. Manipulasi DOM berdasarkan selektor CSS yang memanfaatkan nama-nama dan atribut elemen, misalnya id dan class, sebagai kriteria seleksi simpul-simpul DOM.
    Events
    Efek dan animasi
    AJAX
    Obyek-obyek deferred and promose untuk mengontrol pemrosesan asinkron
    Penguraian JSON
    Ekstensibilitas melalui plugin
    Sejumlah utilitas, misalnya: informasi agen pengguna (user agent), deteksi fitur perangkat
    Metode-metode kompatibilitas yang tersedia secara bawaan pada browser-browser modern, namun membutuhkan pencadangan pada browser yang lebih tua, misalnya `inArray()` dan `each`
Dukungan multi-browser
Browser yang Didukung jQuery Baik versi 1.x maupun 2.x dari jQuery, keduanya mendukung “current-1 versions” (artinya versi stable terkini dari sebuah browser dan satu versi yang mendahuluinya) untuk Firefox, Google Chrome, Safari, dan Opera.
Versi 1.x juga mendukung IE 6 atau diatasnya. Sedangkan versi 2.x tidak lagi mendukung Internet Explorer 6 sampai 8 (yang mewakili kurang dari 28% dari seluruh browser yang digunakan) dan hanya mendukung IE 9 dan selanjutnya.

Penggunaan jQuery
Menautkan library, Library jQuery adalah sebuah file JavaScript yang memuat seluruh fungsi-fungsi umum DOM, event, efek, dan Ajax.  File ini bisa ditautkan dalam sebuah laman web ke salinan pada server lokal atau pada salinan yang disajikan melalui server publik (CDN) antara lain:
1.    MaxCDN
2.    Google
3.    Microsoft ASP.NET
4.    cdnJs
5.    jsDelivr
Untuk menautkan file jQuery pada server lokal, gunakan kode berikut:
<script src="jquery.js"></script>
Untuk menggunakan CDN, sisipkan kode berikut:
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>

Gaya Penggunaan
jQuery memiliki dua gaya penggunaan:
Via fungsi $ → adalah factory method untuk obyek jQuery. Fungsi-fungsi semacam ini, kerap disebut sebagai commands (perintah), dapat dirangkaikan (chainable) sebab masing-masing menyajikan obyek.
Via fungsi $.-prefiks → fungsi-fungsi utilitas yang tidak dijalankan secara langsung pada obyek.
Pada penggunaan tipikal, akses dan manipulasi atas simpul-simpul DOM diawali dengan pemanggilan fungsi $ menggunakan string selektor CSS. Metode ini menghasilkan sebuah obyek jQuery yang merujuk pada elemen-elemen HTML yang sesuai.
Sebagai contoh, $(“div.namaclass”) akan menghasilkan obyek dengan tipe “div” dan class “namaclass”. Simpul ini dapat dimanipulasi dengan menyambungkan satu atau beberapa fungsi jQuery di belakangnya.
Mode No-Conflict, jQuery juga memuat mode .noConflict() yang melepaskan kontrol dari $. Fitur ini sangat berguna jika jQuery digunakan bersama dengan library lainnya yang juga memakai penanda $. Pada mode no-conflict, kita bisa menggunakan jQuery sebagai pengganti dari $ tanpa kehilangan fungsionalitasnya.
Manipulasi properti CSS
jQuery juga mempunyai kemampuan dalam hal memanipulasi CSS. Ada 3 fungsi utama dalam jQuery untuk melakukan manipulasi 
a.    $(selector).css(name,value)
b.    $(selector).css({properties})
c.     $(selector).css(name)
Fungsi css() berguna untuk mendapatkan atau set sebuah properti CSS atau lebih untuk elemen yang dipilih.
Jika parameter name dan value diisi, artinya kita me-set nilai dari properti CSS. Untuk me-set nilai-nilai untuk properti CSS lebih dari satu, bisa gunakan {properties} Jika hanya untuk mendapat nilai dari properti CSS yang diinginkan dari elemen yang dipilih cukup isi parameter name saja.
Contoh css():

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#tombol1").click(function(){
  $(".p1").css("color","red");
  $(".p2").css({"color":"white","background-
color":"#ff8954","font-family":"Arial","font-
size":"20px","padding":"5px"});
 });

 $("#tombol2").click(function(){
  var nilai = $(".p1").css("color");
  alert(nilai);
 });
});
</script>
</head>

<body>
<p class="p1">Paragraf ini cuma berubah satu properti CSS</p>
<p class="p2">Paragraf ini cuma berubah banyak properti CSS</p>
<button id="tombol1">ubah CSS paragraf</button>
<button id="tombol2">Ambil nilai CSS paragraf 1</button>
</body>
</html>


Manipulasi CSS Size
Untuk memanipulasi ukuran dari elemen yang dipilih  (tinggi dan lebar), maka ada dua fungsi untuk hal ini, yaitu :
a.    $(selector).height(value)
b.    $(selector).width(value)
Jika anda mengisi parameter value, maka artinya anda me-set nilai height atau width dari elemen yang anda pilih. Jika anda mengosongkan parameter value, maka artinya anda mengambil nilai height atau width dari elemen yang dipilih.

Contoh CSS size
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("#tombol1").click(function(){
  $("#kotak").width("300px");
  $("#kotak").height("300px");
 });
 $("#tombol2").click(function(){
  var nilai = $("#kotak").width();
  alert(nilai);
 });

});
</script>
</head>

<body>
<div id=kotak style="background-color:pink;width:100px;height:100px;">
Hello
</div>
<p>
<button id="tombol1">ubah ukuran kotak</button>
<button id="tombol2">Ambil nilai ukuran kotak</button>
</body>
</html>

Manipulasi Posisi
Untuk melakukan manipulasi posisi dari suatu elemen HTML, berikut beberapa fungsi jQuery untuk melakukannya.
offset(), Untuk mendapatkan atau me-set offset dari elemen yang dipilih. Relatif terhadap dokumen. Sintaks :
$(selector).offset(coordinates)
Parameter coordinates bisa berupa koordinat dari elemen yang dipilih, contoh :
offset({top:100,left:0})
Jika kita mengosongkan parameter coordinates, artinya kita mengambil nilai offset dari elemen yang kita pilih. Fungsi offset() akan menghasil objek yang mempunyai 2 properti yaitu top dan left.
Contoh offset()
<html>
<head>
<style>
#div1{
background-color : yellow;
width : 100px;
height : 100px;
position : relative;
left : 300;
}
</style>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#tombol").click(function(){
        posisi=new Object();
        posisi.left=$("#x").val();
        posisi.top=$("#y").val();
        $("#div1").offset(posisi);
        pos = $("#div1").offset();
        alert("x="+pos.left+",y="+pos.top);
    });
});
</script>
</head>
<body>
<div id=div1>
Hello World!
</div>
x = <input type=text size=4 id=x><br>
y = <input type=text size=4 id=y><br>
<button id=tombol>Set Offset</button>
</body>
</html>

offsetParent()
Untuk mendapatkan element parent terdekat dengan posisi yag telah ditentukan. Sintaks.
$(selector).offset()
Contoh offsetParent()
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("button").click(function(){
    $("p").offsetParent().css("background-color","green");
  });
});
</script>
</head>
<body>
<div style="width:70%;position:absolute;left:100px;top:100px">
<div style="margin:50px;background-color:yellow">
<p>Klik tombol untuk set background color untuk elemen parent terdekat
dari paragraf ini</p>
<div>
</div>
<button>ubah warna latar</button>
</body>
</html>

position()
Hampir sama dengan offset(), yaitu untuk mendapatkan atau menentukan posisi dari elemen, tetapi relatif terhadap parent. Fungsi position() akan menghasil objek yang mempunyai 2 properti yaitu top dan left.
Sintaks : $(selector).position()
Contoh :
$(".tombol").click(function(){
  x=$("p").position();
  $("#div1").text(x.left);
  $("#div2").text(x.top);
});
scrollLeft()
Untuk mendapatkan atau menentukan scroll left offset dari elemen yang dipilih.
Sintaks : $(selector).scrollLeft(offset)
Parameter offset adalah nilai dalam pixel elemen akan di scroll dari posisi kiri elemen tersebut. Jika parameter offset dikosongkan, maka artinya kita mengambil nilai offset dari scroll left elemen tersebut.
Contoh :
$(".tombol").click(function(){
  $("div").scrollLeft(300);
});

scrollTop()
Untuk mendapatkan atau menentukan scroll top offset dari elemen yang dipilih.
Sintaks : $(selector).scrollTop(offset)
Parameter offset adalah nilai dalam pixel elemen akan di scroll dari posisi atas elemen tersebut. Jika parameter offset dikosongkan, maka artinya kita mengambil nilai offset dari scroll Top elemen tersebut.
Contoh :
$(".tombol").click(function(){
  $("div").scrollTop(300);
});

Web Tab Scroll Content
Sekarang mari kita lihat contoh website, menggunakan jquery. Di mana web ini menggunakan tab-tab, yang me-load konten dengan melakukan animasi scroll terhadap konten yang kita sembunyikan.
Contoh scrollTop()
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function(){
    $("#home").click(function(){
        $("#konten").animate({ scrollTop: 0},"slow");
    });
    $("#about").click(function(){
        $("#konten").animate({ scrollTop: 500},"slow");
    });
    $("#contact").click(function(){
        $("#konten").animate({ scrollTop: 1000},"slow");
    });
});
</script>
<style>
#konten{
    height : 500px;
    overflow: hidden;
    background-color : yellow;
}
.box{
    height : 500px;
    margin:0;
    padding : 0;
}
.link{
    cursor : pointer;
    background-color : lightyellow;
    padding : 3;
}
body{
    overflow:hidden;
}
#home{
    background-color : green;
}
#about{
    background-color : red;
}
#contact{
    background-color : blue;
}
.aboutme{
    background-color : black;
    color : white;
    font-size : 26pt;
    font-family : garamond;
}
</style>
</head>
<body>
<span class=link id=home>Home</span>
<span class=link id=about>About</span>
<span class=link id=contact>Contact</span>
<div id=konten>
    <div id=home class=box>
    <br><b>Home</b><p>
    <center>
    <font size=7>Selamat Datang</font></center>
    </div>
    <div id=about class=box>
    <br><b>About Me</b>
    <p>
    <span class=aboutme>Hi,namaku Cry Angels</span>
    </p>
    <p>
    <span class=aboutme>Lahir di Indonesia</span></p>
    <p>
    <span class=aboutme>Punya Hobbi Tidur Seharian</span></p>
    </div>
    <div id=contact class=box>
    <br><b>Contact</b>
<form method="POST" action="--WEBBOT-SELF--" style="padding:10">
    <p>
    Nama :<br>
    <input type="text" name="T1" size="20"><br>
    Emai : <br>
    <input type="text" name="T2" size="20"><br>
    Komentar :<br>
    <textarea rows="6" name="S1" cols="24"></textarea><br>
    <input type="submit" value="Submit" name="B1"><input type="reset"
value="Reset" name="B2"></p>
    </form>
    </div>
</div>
</body>
</html>

Untuk menghilangkan scroll di <div id=kontent> kita menggunakan CSS
overflow:hidden;
Ketika kita mengklik salah satu tab, maka kita membuat animasi scrolling menggunakan kode :
$("#konten").animate({ scrollTop: 500},"slow");