Adım 1
Öncelikle mootools kütüphanesi mevcut değil ise, aşağıdaki bağlantıdan sıkıştırılmış halini indirelim;
http://mootools.net/download
Adım 2
Şimdi sırasıyla şu dosyaları oluşturalım;
- index.html
- style.css
- custom.js
Adım 3
html sayfamızın içerisine standart html taglarımızı girelim.. Style dosyamızı çağıralım.. Ve mootools kütüphanesi ile custom.js dosyamızıda sayfamıza dahil edelim..
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title></title> <!-- style --> <link rel="stylesheet" href="style.css" /> <!-- scripts --> <script type="text/javascript" src="mootools-core-1.4.5-full-nocompat-yc.js"></script> <script type="text/javascript" src="custom.js"></script> </head> <body> </body> </html>
12345678910111213141516171819
Adım 4
html sayfamıza özelleştirmek için bir adet selectbox ekleyelim..
<select name="sehir" class="select"> <option value="0">Şehir Seçin</option> <option value="Eskişehir">Eskişehir</option> <option value="Ankara">Ankara</option> <option value="Adana">Adana</option> <option value="İzmir">İzmir</option> </select>
1234567
Adım 5
custom.js dosyamızı açalım.. Ve sayfamız hazır olduğunda bizde hazırız diyelim;
window.addEvent('domready', function(){ /* .. .. */ });
123
Adım 6
Şimdi sınıfı select olan bütün selectbox'ları seçip each ile döngüye sokalım.
$$('select.select').each(function(elem, index){ /* .. .. */ });
123
İlk olarak selectbox'ın opacity değerini 0 yaparak görünmez hale getirelim;
elem.setStyle('opacity', 0);
1
Şimdi selectbox'ın kapsayıcı nesnesini oluşturalım;
var selectBoxContent = new Element('div', { 'class': 'selectBoxContent' });
123
Oluşturduğumuz kapsayıcı nesneyi önce dom'a ekliyoruz.. Yani select nesnesinin hemen öncesine ekliyoruz.
selectBoxContent.inject(elem, 'before');
1
Ve dom'a eklediğimiz kapsayıcı nesnenin içerisine şimdi selectbox'ımızı ekleyebiliriz;
elem.inject(selectBoxContent);
1
f12'yi basıp developer tools'dan baktığınızda şöyle bir görüntü var ise buraya kadar her şeyi doğru yaptınız demektir :)
Seçilen select değerini gösterecek text nesnesini oluşturalım, içerisine ise seçili select değerini atayalım;
var selectText = new Element('span', { 'class' : 'selectText', 'text' : elem.getSelected().get('text') });
1234
Ve şimdi bu text nesnesini select'ten hemen öncesine ekliyoruz.
selectText.inject(elem, 'before');
1
Son bir adım kaldı, oda select değeri değiştiğinde bunu yakalayıp text nesnesine yazdırmak.. Onun içinse şöyle bir kod yazacağız;
elem.addEvent('change', function(){ selectText.set('text', elem.getSelected().get('text')); });
123
Evet, bu kadar koddan sonra custom.js dosyamızın son hali şöyle olmalı;
window.addEvent('domready', function(){ $$('select.select').each(function(elem, index){ elem.setStyle('opacity', 0); var selectBoxContent = new Element('div', { 'class': 'selectBoxContent' }); selectBoxContent.inject(elem, 'before'); elem.inject(selectBoxContent); var selectText = new Element('span', { 'class' : 'selectText', 'text' : elem.getSelected().get('text') }); selectText.inject(elem, 'before'); elem.addEvent('change', function(){ selectText.set('text', elem.getSelected().get('text')); }); }); });
1234567891011121314151617181920
Buradan sonrasını ise css ile halledeceğiz..
Adım 7
İlk olarak bir reset.css yazmamak için sevgili eric meyer'in reset.css'ini kullanabiliriz.. Bunun için aşağıdaki bağlantıyı kullanabilirsiniz;
http://meyerweb.com/eric/tools/css/reset/
Adım 8
Son olarak selectbox'ımıza biraz şekil verelim;
/*__ SELECTBOX __*/ .selectBoxContent { position: relative; display: inline-block; *display: inline; zoom: 1; background: #f7f7f7 url(https://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat 175px; border: 1px solid #ddd; border-top-color: #aaa; height: 30px; width: 200px } .selectBoxContent span.selectText { position: absolute; padding-left: 8px; font: 12px/30px Arial; color: #666 } .selectBoxContent:hover span.selectText { color: #111 } .selectBoxContent select { width: 100%; height: 30px; cursor: pointer; position: relative; z-index: 1 }
12345678910111213141516171819202122232425262728
Evet, tebrikler.. Başarılı bir şekilde basit ve kullanışlı bir selectbox örneği hazırladık :)
Hiç yorum yok:
Yorum Gönder