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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.equalizecols.js"></script>
<style type="text/css">
<!--
#header {
	height:100px;
	clear:both;
	color:green;
}
#wrapper {
    float:left;
}
#sidebar {
    float:left;
	width:200px;
	color:red;
}
#contentbar {
    float:left;
	width:400px;
	color:yellow;
}
#otherbar {
    float:left;
	width:200px;
	color:blue;
}
#footer {
    clear:both;
	height:30px;
	color:green;
}
-->
</style>
<script type="text/javascript">
$(document).ready(function() {
   if ($(window).height() > $('body').height()) {
		var selisih = $(window).height() - $('body').height();
		$("#wrapper").height($("#wrapper").height() + selisih);
		$("#sidebar").height($("#wrapper").height());
		$("#otherbar").height($("#wrapper").height());
   } else {
	$("#wrapper, #sidebar, #otherbar, #contentbar").equalizeCols();
   }
});
</script>
</head>
<body>
<div id="header">
	this is header
</div>
<div id="wrapper">
	<div id="sidebar">
	left column
	</div>
	<div id="contentbar">
	main content
	</div>
	<div id="otherbar">
	right column
	</div>
</div>
<div id="footer">
	copyright info
</div>
</body>
</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

$(document).ready(function() {   

});

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

if ($(window).height() > $('body').height()) {

}

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

var selisih = $(window).height() - $('body').height();
$("#wrapper").height($("#wrapper").height() + selisih);
$("#sidebar").height($("#wrapper").height());
$("#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:

$("#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 !

About Adi Setiawan

web developer, @startupbali initiator, ubuntu user, proud father. Living in-between space

07. November 2007 by Adi Setiawan
Categories: css, Javascript, Web Design, Website Development | Tags: | 1 comment

One Comment

  1. Nice info. Tapi kok gag bisa ya di web q…..

Leave a Reply

Required fields are marked *

*