Full height column. CSS & jQuery

Salah satu kelemahan menggunakan div adalah menyamakan tinggi beberapa div untuk kolom serta membuat div tersebut expandable mengikuti tinggi window. Liat screenshot berikut:

tiga kolom sebelum

Secara default tinggi div kolom berbeda-beda mengikuti isi dari div tersebut. Belum lagi jika tinggi dari div kurang dari ukuran window browser sehingga footer tampak seperti melayang diatas. Ada beberapa teknik tertentu untuk membuat tinggi kolom tampak sama antara lain menggunakan cara faux column. Kali ini kita akan membuat agar semua kolom mempunyai tinggi sama dan jika kurang dari tinggi window browser maka secara otomatis akan menyamakan-nya. Yg kita perlukan adalah jQuery, plugin equalizeCols dan sedikit teknik css. Hasil akhir akan seperti ini:

tiga kolom sesudah

berikut html & css-nya

HTML:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <script type="text/javascript" src="jquery.js"></script>
  5. <script type="text/javascript" src="jquery.equalizecols.js"></script>
  6. <style type="text/css">
  7. <!--
  8. #header {
  9.     height:100px;
  10.     clear:both;
  11.     color:green;
  12. }
  13. #wrapper {
  14.     float:left;
  15. }
  16. #sidebar {
  17.     float:left;
  18.     width:200px;
  19.     color:red;
  20. }
  21. #contentbar {
  22.     float:left;
  23.     width:400px;
  24.     color:yellow;
  25. }
  26. #otherbar {
  27.     float:left;
  28.     width:200px;
  29.     color:blue;
  30. }
  31. #footer {
  32.     clear:both;
  33.     height:30px;
  34.     color:green;
  35. }
  36. -->
  37. </style>
  38. <script type="text/javascript">
  39. $(document).ready(function() {
  40.    if ($(window).height()> $('body').height()) {
  41.         var selisih = $(window).height() - $('body').height();
  42.         $("#wrapper").height($("#wrapper").height() + selisih);
  43.         $("#sidebar").height($("#wrapper").height());
  44.         $("#otherbar").height($("#wrapper").height());
  45.    } else {
  46.     $("#wrapper, #sidebar, #otherbar, #contentbar").equalizeCols();
  47.    }
  48. });
  49. </script>
  50. </head>
  51. <div id="header">
  52.     this is header
  53. </div>
  54. <div id="wrapper">
  55.     <div id="sidebar">
  56.     left column
  57.     </div>
  58.     <div id="contentbar">
  59.     main content
  60.     </div>
  61.     <div id="otherbar">
  62.     right column
  63.     </div>
  64. </div>
  65. <div id="footer">
  66.     copyright info
  67. </div>
  68. </body>
  69. </html>

tidak ada yg spesial di css tersebut kecuali penggunaan float:left pada wrapper. Hal ini dilakukan agar wrapper mengikuti tinggi dari div yg paling tinggi. Pastikan juga jquery dan plugin equalizeCols sudah didownload dan path sudah benar. Sekarang kita bahas sedikit kode javascript diatas.

Seluruh kode ada didalam

HTML:
  1. $(document).ready(function() {   
  2.  
  3. });

agar semua berjalan saat document ready. Kemudian kita cek apakah tinggi dari window browser lebih besar dari tinggi body halaman menggunakan:

HTML:
  1. if ($(window).height()> $('body').height()) {
  2.    
  3. }

Jika ya maka kita akan menambahkan tinggi wrapper dengan selisih dari tinggi window browser dan body halaman. Untuk mendapatkan tinggi dari element di jquery cukup menggunakan $(element).height(); dalam hal ini

HTML:
  1. var selisih = $(window).height() - $('body').height();
  2. $("#wrapper").height($("#wrapper").height() + selisih);
  3. $("#sidebar").height($("#wrapper").height());
  4. $("#otherbar").height($("#wrapper").height());

perhatikan bagaimana kita merubah tinggi dari wrapper dengan mudah dengan memasukkan nilai kedalam atribut height() dari wrapper. Terakhir jika ternyata tinggi body halaman lebih besar atau sama dengan tinggi window browser kita menggunakan plugin dari jquery yg berguna untuk menyamakan tinggi dari beberapa div dengan mudah dengan perintah:

HTML:
  1. $("#wrapper, #sidebar, #otherbar, #contentbar").equalizeCols();

Detail plugin tersebut bisa diliat disini.

Mudah kan? Jika tanpa jQuery, mungkin kode javascript-nya bisa berpuluh2 baris. Menggunakan jQuery, hidup kita jadi lebih mudah :)

happy jQuerying !

6 Responses to “Full height column. CSS & jQuery”


  1. 1 Suwahadi

    Binun Om… (*garuk2 kepala*)

  2. 2 amrinz

    Tanpa Jscript dan Image bisa gak? Soalnya gak suka javascript ni

  3. 3 didats

    bingung juga mas aku… :P

  4. 4 adisetiawan

    [quote comment=""]bingung juga mas aku… :P[/quote]
    [quote comment="1115"]Binun Om… (*garuk2 kepala*)[/quote]

    yg nulis aja bingung kok :P
    [quote comment="1128"]Tanpa Jscript dan Image bisa gak? Soalnya gak suka javascript ni[/quote]

    kalo gak suka jgn dipacarin :) becanda…

  5. 5 zaM

    bermanfaat banget, langsung saya pakai
    terimakasih bro! :D

  6. 6 MUNTAHA

    Permisi Tuan Guru…. Ilmunya mau langsung saya coba… Sekalian mo nanya nih, kalu PHP itu makluk apaan yah , dan kodenya bagaimana?

Leave a Reply




It seems you're using an unsafe, out-of-date browser. Click here to upgrade to Firefox for free. X