Javascript ve CSS ile Analog Saat Yapımı

Yukarıda videosu izleyebileceğiniz bu örnek web geliştirmeye yeni başlayanlar için güzel bir pratik olacaktır. Örneğin kodlarına buradan erişebilirsiniz.

Her zaman olduğu gibi HTML etiketleri ile başlıyoruz. frame sınıflı bir div ile bütün diğer etiketleri sarıyoruz. Bu div‘in içine üç göstergemiz için stick sınıflı ve göstergeyi belirten minute hour ve second sınıflı elementler ekliyoruz. Ayrıca saat sayılarını göstermek için line-wrapper ve içine 12 tane line sınıflı element ekliyoruz.

HTML sayfamız hazır. Stil kodlarını açıklamak gerekirse, frame için eşit genişlik ve yükseklik veriyoruz böylece border-radius ile düzgün bir çember elde edebilelim. Ayrıca position:relative stilini de vermemiz gerek çünkü altındaki elementlerin hepsi absolute pozisyonlanacak.

stick sınıfı üç gösterge için ortak sınıf. bottom:150px ile dikeyde ortalıyoruz, diğer değerler de yatayda ortalamamızı sağlıyor. transform-origin olarak alt-orta veriyoruz çünkü dönme hareketini transform stilini kullanarak yapacağız ve elementin alt ucu sabit kalarak dönmesini istiyoruz.

Yalnız saniye göstergesi için durum farklı, gerçek analog saatlerde saniye göstergesinin merkeze bağlandığı yerden sonra uzayan kuyruğunu da işe katmak için, second sınıfına en altın biraz daha yukarısını dönme merkezi yapıyoruz. bottom değerini de buna uygun veriyoruz. Ayrıca görsel güzellik için second::before ile saatin merkezine yuvarlak bir element getirerek dönme merkezini kapatıyoruz. minute ve hour sınıflarına da uygun stilleri veriyoruz.

line sınıflı elementler sayıları gösteren siyah çubuklar olacak, line::after ise sayıları gösterecek. Burada nth-child özelliğini kullarak her bir çizgi için özel dönme değeri ve sayı verebiliyoruz.

Javascript dosyamıza geçersek, burada clock isimli bir değişkene kendini çağıran bir fonksiyon atıyoruz. Böylece saat için kullanacağımız değişkenler global scope’ta erişilemez olacak hem de biz global scope’taki bir değişkeni bozmamış olacağız. (bkz: encapsulation). Üç göstergemizi de document.querySelector ile birer değişkene atıyoruz. Saniye, dakika ve saat için dönme derecelerini tuttuğumuz birer değişken oluşturuyoruz. Her saniye ve dakika göstergesini 6 derece döndürecek, saat göstergesi ise her bir saat için 30 derece artı dakika derecesine göre 0-30 derece arası bir küsurat alacak.

rotate adında bir fonksiyon ile elementi ve derece değeri parametre olarak verip döndürme işlemini yaptırıyoruz.

Her saniye çalıştırılması için setInterval kullandığımız tick fonksiyonu ise oluşturduğumuz derece değişkenlerini güncelleyerek tekrar rotate fonksiyonunu çağırıyoruz.

Bir Cevap Yazın