JQuery ile fluid grid oluşturmak
Bir web sayfasına magazin/gazete görünümünde gird oluşturmak JQuery ile çok basit bir şekilde olmaktadır. Aşağıda kullanılan yöntem ve fonksiyonlar çok basit olması nedeniyle bir çok kişi tarafından rahatlıkla uygulanabilir. Bunları adımlayarak yapacak olursak:
1- Basit bir html sayfası oluşturalım:
<html>
<head>
<title>Fluid grid</title>
<script type="text/javascript" src="script/jquery-1.3.2.min.js"></script>
</head>
<body>
<div class="box"><p><span>01</span>01 Numaralı kutu...</p></div>
<div class="box alt"><p><span>02</span>02 Numaralı kutu...</p></div>
<div class="box"><p><span>03</span>03 Numaralı kutu...</p></div>
<div class="box alt"><p><span>04</span>04 Numaralı kutu...</p></div>
<div class="box"><p><span>05</span>05 Numaralı kutu...</p></div>
<div class="box alt"><p><span>06</span>06 Numaralı kutu...</p></div>
<div class="box"><p><span>07</span>07 Numaralı kutu...</p></div>
<div class="box alt"><p><span>08</span>08 Numaralı kutu...</p></div>
<div class="box"><p><span>09</span>09 Numaralı kutu...</p></div>
</body>
</html>
burada kullanılan divlerin sayısı artırılabilir ve içeriği makale olabilir, nesne olabilir, yazı olabilir.
2- Oluşturduğumuz html dosyamıza stil verelim:
<style type="text/css">
body {
position: relative;
width: 100%;
}
.box {
background-color: #F0F0F0;
color: #888;
font-family: Arial, Tahoma, serif;
font-size: 13px;
}
.box p {
padding: 10px;
}
.box span {
float: left;
font-size: 26px;
font-weight: bold;
}
div.alt {
background-color: #CCC;
}
</style>
sayfamıza stil verdikten sonra görünümü aşağıdaki şekilde olacaktır.

3- bu adımda ise Javascript işlemleri yapıyoruz:
<script type="text/javascript">
var myFluidGrid = {
COLNUMBER : 2, // Minimum sutun sayısı.
COLMARGIN : 10, // Yanındaki sutunla arasındaki mesafe
COLWIDTH : 240 // Butun sutunlara standart boyut veriyoruz
};
</script>
Gerekli özellikleride tanımladıktan sonra bütün kutuların üst pozisyonlarını hesaplamamız gerekiyor çünkü her kutunun boyu farklı olabilir içerdiği bilgiye göre, onun içinde aşağıdaki işlemleri yapıyoruz.
doLayout : function() {
var self = this;
var pointer = 0;
var arr = [];
var columns = Math.max(this.COLNUMBER, parseInt($('body').innerWidth() / (this.COLWIDTH + this.COLMARGIN)));
$('.box').css('position', 'absolute').css('width', this.COLWIDTH + 'px');
$('.box').each(function() {
var tempLeft = (pointer * (self.COLWIDTH + self.COLMARGIN));
$(this).css('left', tempLeft + 'px');
var tempTop = 0;
if (arr[pointer]) { tempTop = arr[pointer]; }
$(this).css('top', tempTop + 'px');
arr[pointer] = tempTop + $(this).outerHeight() + self.COLMARGIN;
pointer++;
if (pointer === columns) { pointer = 0; }
});
}
4- Son olarak JQuery ile gridlerimizi oluşturuyoruz:
$(window).ready(function() {
myFluidGrid.doLayout();
}).resize(function() {
myFluidGrid.doLayout();
});
Bütün bu işlemleri yaptıktan sonra sayfamızın görüntüsü aşağıdaki şekilde olacaktır.
Yapılan tüm işemleri bütün halinde aşağıda görebilirsiniz:
<html>
<head>
<title>Fluid grid</title>
<link rel="stylesheet" type="text/css" href="style/reset.css" />
<style type="text/css">
body {
position: relative;
width: 100%;
}
.box {
background-color: #F0F0F0;
color: #888;
font-family: Arial, Tahoma, serif;
font-size: 13px;
}
.box p {
padding: 10px;
}
.box span {
float: left;
font-size: 26px;
font-weight: bold;
}
div.alt {
background-color: #CCC;
}
</style>
<script type="text/javascript" src="script/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
var myFluidGrid = {
COLNUMBER : 2, // Minimum sutun sayısı.
COLMARGIN : 10, // Yanındaki sutunla arasındaki mesafe
COLWIDTH : 240 // Sutunlara standart boyut veriyoruz
doLayout : function() {
var self = this;
var pointer = 0;
var arr = [];
var columns = Math.max(this.COLNUMBER, parseInt($('body').innerWidth() / (this.COLWIDTH + this.COLMARGIN)));
$('.box').css('position', 'absolute').css('width', this.COLWIDTH + 'px');
$('.box').each(function() {
var tempLeft = (pointer * (self.COLWIDTH + self.COLMARGIN));
$(this).css('left', tempLeft + 'px');
var tempTop = 0;
if (arr[pointer]) { tempTop = arr[pointer]; }
$(this).css('top', tempTop + 'px');
arr[pointer] = tempTop + $(this).outerHeight() + self.COLMARGIN;
pointer++;
if (pointer === columns) { pointer = 0; }
});
}
};
$(window).ready(function() {
myFluidGrid.doLayout();
}).resize(function() {
myFluidGrid.doLayout();
});
</script>
</head>
<body>
<div class="box"><p><span>01</span>01 Numaralı kutu...</p></div>
<div class="box alt"><p><span>02</span>02 Numaralı kutu...</p></div>
<div class="box"><p><span>03</span>03 Numaralı kutu...</p></div>
<div class="box alt"><p><span>04</span>04 Numaralı kutu...</p></div>
<div class="box"><p><span>05</span>05 Numaralı kutu...</p></div>
<div class="box alt"><p><span>06</span>06 Numaralı kutu...</p></div>
<div class="box"><p><span>07</span>07 Numaralı kutu...</p></div>
<div class="box alt"><p><span>08</span>08 Numaralı kutu...</p></div>
<div class="box"><p><span>09</span>09 Numaralı kutu...</p></div>
</body>
</html>




















