CSS ile Yüzde Çubuğu Hazırlama

Yüzde çubuğuna ben anket yaparken ihtiyaç duydum. CSS ile yüzde çubuğu yapmak bize çok büyük kolaylık sağlıyor. Diğer yöntemlere göre daha esnek ve kolay bir uygulamaya sahiptir CSS ile yüzde çubuğu hazırlamak.

CSS ile yüzde çubuğu yapmanın bir kaç yöntemi var, ben kendimce en uygun gördüğümü anlatacağım.

Bu yöntemin uygulaması gayet basittir. Diğer yöntemlerden avantajıda fazladan kod kullanılmamasıdır, sadece iki resim ile işimizi halledeceğiz. Anlamlı kodlama açısından avantajlıdır.

Sayfamıza saydam bir resim ekleriz ve ardalan konumunu kod içinde belirleriz

<img src="/images/yuzde_cubugu.png" alt="%45" class="yuzdeCubugu" style="background-position: -50px 0;" /> 

Sonrasında CSS kodumuzu yazarsak;

img.yuzdeCubugu {
background: url(/images/yuzdeCubugu_ard.gif) top left no-repeat;
padding: 0;
margin: 0;
} 

Kod kısmı bu kadar. Evet bu kadar kod ile yüzde çubuğunu oluşturduk. Kodun mantığını incelersek;

Fikir olarak güzel bir düşünceye sahip olan bu kod, saydam orta kısmı olan bir resme(bu resim bir bakıma kenar çizgisi görevide görüyor) yüzdeyi göstermek için bir ardalan(background) atayarak yüzde çubuğumuzu oluşturuyoruz. Bu ardalanın konumunuda, yüzde değerini göstermek için kullanıyoruz. Sunucu taraflı bir dil ile  veya Javascript ile bu yüzde çubuğundaki değeri belirtmek için ardalan konumunu değiştiririz. Ayrıntılı bilgi ve örnek uygulama için http://www.webappers.com/progressBar/ tıklıynız.

Resmin alt özelliğinede yüzde değerini yazdırmak ekran okuyucular için ve dolayısıyla erişebilirlik açısından önemli.

Beraber bir örnek yapalım. Mesela son günlerin en çok konuşulan Amerika Seçim Sonuçları için bir sayfa hazırlayalım.

Resimlerimiz
yüzde çubugu

Xhtml kodumuzu yazalım.

 <h1>Amerika Seçim Sonuçları</h1>
<p>Obama (%56)</p>
<img src="yuzde_cubugu.gif" width="104" height="14" alt="%56" class="yuzde1" style="background-position: -42px 0;" />
<p>McCain (%44)</p>
<img src="yuzde_cubugu.gif" width="104" height="14" alt="%44" class="yuzde2" style="background-position: -54px 0;" /> 

Yüzde çubuğunun genişliğini 100px yaptım ki, ayarlaması kolay olsun. Resim genişliğinin 104px görünmesinin nedeni 2px sağdan ve 2px soldan kenar çizgilerinin olması.

Obama %56 yapmak için ardalan konumunu 100-56= 44 resmin solundaki 2px mesafeyide çıkarınca hesabımız tam olacaktır. Yani ardalan konumu 100 – 56 – 2 = -42px şeklinde hesaplanacak.

Aynı şekilde McCain‘in yüzdesini de hesaplarsak. 100 – 44 – = -54px

CSS kodumuz;

h1{
    font:18px Arial, Helvetica, sans-serif;
    color:#666;
} 

p{
    font:bold 12px Arial, Helvetica, sans-serif;
    margin-bottom:5px;
    color:#666;
} 

img.yuzde1 {
 background:url(gosteri1.gif) 0 0 no-repeat;
 padding: 0;
 margin: 0;
} 

img.yuzde2 {
 background:url(gosteri2.gif) 0 0 no-repeat;
 padding: 0;
 margin: 0;
}

anket sonuç ekranı

Örnek kod FF3, IE6 – 7, Safari 3, Opera 9.6 ve Google Chrome 0.3Beta test edilmiştir.

Örnek kodu görmek için tıklayınız.

Kaynaklar

This website uses IntenseDebate comments, but they are not currently loaded because either your browser doesn't support JavaScript, or they didn't load fast enough.

19 Yorum (Yorum Ekle)

  • alico diyor ki:

    ben birazdan daha uçuk şeyler hazırlamıştım.bunuda örnek arşivinize alırsınız.
    http://ailetip.com/anket/randevu-sistemimizden-memnun-usunuz-s6.htm

  • Kadir GÜNAY diyor ki:

    Mantıken dediğin gibi Fatih hocam. Yalnız hakanın koduna baktım da child selector kullanmuş IE6 kabul etmiyor. Her yerde bu IE6 sorunu yakında çıldırcam o olacak :D

  • fatih.hayrioglu diyor ki:

    aslında tğm yöntemlerde aynı mantık var. dışta bir kenarlık ve içinde yüzdeyi gösteren bir resim. Hakan’ın anlattığı yöntemde bunu yapmak için fazladan bir katman koyuyoruz. Yukardaki yöntemde ise bu anlamsız koda gerek yo, tek eleman ile çözüm oluşturuyoruz.

  • Kadir GÜNAY diyor ki:

    Ben normalde bir ana div açıyorum ve onu yüzde yüzlük olarak baz alıyorum arka plan rengini veriyorum, daha sonra içine bir div daha ekliyorum ve onu da derecelendiriyorum. Onun arka plan rengi ana dive göre daha farklı oluyor elbette. Sonra da yüzdeyi yazdırıyorum :) tabi görsellik çok olmuyor ama 1-2 imaj ile onu da görselleştirmek mümkün.

  • Tuğca Eker diyor ki:

    @Fatih Turan
    Hakan Demiray’ın yaptığı ilerleme çubuğunda görsel kullanılmamış.

    http://www.dmry.net/css-ile-basit-bir-ilerleme-durum-cubugu-yapimi

  • Salih S. DEMİR diyor ki:

    Güzel bir çalışma, ben ASP kodlarının yorumlanmasıyla oluşan sayılara değer vermeyi düşünümüştüm bir süre önce, bunu kullanarak çok güzel sonuçlara ulaşabilirim. Teşekkürler.

  • fatihturan diyor ki:

    Biraz daha fazla uğraşarak bu örneği herhangi bir görsel kullanmadan da yapılabileceğini düşünüyorum.

  • Tuğca Eker diyor ki:

    @garajkapısı
    :D Emin değilim yanlış bir bilgi olabilir…
    Belirtilen sayılar, yüzdeyi gösterecek resmin konumlandırılması için kullanılmış. Normalde “100 – verilmesi gereken değer” şeklinde olması gerekiyor. Ancak bu şekilde, farklı tarayıcılarda oluşabilecek görünüm hataları çözülmüş galiba…

    Güzel ve bilgilendirici bir yazı olmuş.
    Elinize sağlık…

  • fatih.hayrioglu diyor ki:

    @garaj kapısı linki düzelttim. Ayrıca söylediğin doğru 42 ve 54 ü açıklayan bir pragraf gerekli. Oraya bir açıklama yazayım.

  • garaj kapısı diyor ki:

    Teşekkürler paylaşım için, ama ben bu background position olarak belirtilen -42px ve -54px’i anlayamadım. Ayrıca verdiğiniz linkte de küçük bir hata var belirtmek istedim.

Yorum yaz

Format: Yorum içinde kullanılabilecek HTML kodları: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

?