zingat.com’da yaklaşık 4-5 aydır jquery yerine javascript ile yazmaya başladık. Çalışma arkadaşlarımın da yardımıyla jQuery’yi siteden çıkarma hedefimize doğru ilerliyoruz. Bu süreçte gördüklerimi sizlerle paylaşıyorum. Bu makalemde javascript ile elementlere nasıl stil atarız ve atanmış stil bilgisini nasıl okuruz sorularının cevabını bulacağız.

Hesaplanan değer (Computed values) ve çözümlenmiş değer (resolved values) kavramları

Değerler konusunda CSS’de iki farklı anlayış vardır.

1- Hesaplanan değerler: Bir elemana tanımlanmış değerler ve kalıtsal gelen değerlerin hepsinin olduğu değerlere denir. Örneğin line-height: 1.3em veya font-size: 120%.

2- Çözümlenmiş değerler: Elemana uygulanmış değerlerin son halidir. Yukarıdaki örneklerde line-height: 1.3em ve font-size: 120% değerleri göreceli değerlerdir. Tarayıcı bu değerleri uygulamadan önce mutlak değerlere çevirerek atar. Örneğin line-height: 16px ve font-size: 18px olarak çevirir ve uygular.

Standart oluşturucular başlangıçta getComputedStyle metodu hesaplanan değerleri almak için oluşturdu ancak sonra çözümlenmiş değerlerin alınmasının daha avantajlı olduğuna karar verip değiştirdi. Bundan dolayıdır ki getComputedStyle metodu çözümlenmiş değerleri bize verir.

Stilleri okumak

Stilleri okumak için getComputedStyle metodunu kullanırız.

var stiller = window.getComputedStyle(elem);

Bu elemana atanmış tüm stilleri aldık.

var renk = window.getComputedStyle(elem).color;

Bu kod ile de elemana atanmış renk değerini alırız. Atanmış diğer stilleride aynı şekilde alabiliriz.

var padding = window.getComputedStyle(elem).padding;

Elemanın padding değerini aldık.

Elemente stil atamak

elem.style objesi style özniteliğine karşılık gelen bir nesnedir.

elem.style.color = 'red';

kodu

<div id='deneme' style='color:red'></div>

şeklinde uygulanacaktır.

Dikkat etmemiz gereken bir ayrıntı da birden fazla kelimeden oluşan tanımların CSS ile kebap-case şeklinde birleştirilirken, javascript ile birleştirilirken camelCase şeklinde yazarız. Örneğin background-color tanımını elem.style.backgroundColor şeklinde tanımlarız.

Çoklu stil tanımlamak

Birden fazla stil tanımlamak için cssText özelliğini kullanırız.

elem.style.cssText = 'background-color: red; color: white';

Bu özelliğin şöyle bir dezavantajı var. Mevcut tanımların üzerine yeni stilleri yazar, yeni ekleme yapmaz. Bunu çözmek için bir kaç yöntem var. Çoklu tanım için yarımcı bir metot yazmak, ikincisi ise global bir css dosyasını oluşturup ona tanımlamak.

Kalın sağlıcakla.

Kaynaklar

Normal şartlarda kodlarımızın küçük bloklar halinde farklı dosyalarda olduğu bir dünya düşünürken genelde projelerimizde 2000, 3000 satırlık kod blokları olur.

Hayaller Hawaii hayatlar Sanayii:)

Uzun sayfalarda editörde belli bloklar arasında yukarı aşağı gezinmek sorun oluyor. Bu durumu çözecek bir özellik editör yerimi (Bookmarking) özelliği.

sublime text bookmarking

Yerimi ekleme kısayolu (MacOS için) kntrl + shift + r tekrar bastığınız da ise kaldırıyor.

sublime text bookmarking

Yerimim eklendiğini satır numarası yazan yerin solunda yerimi ikonu çıkıyor. Yerimleri arasınra gezinmek için kısayol olarak fn + F2 kullanıyoruz. Bu tuş kombinasyonuna her bastığımızda yerimleri arasında geziniyoruz.

CSS’de Uyumlu web geliştirmeleri yaparken normal kod ile media tanımları arasında gezinirken de yardımcı olur.

Kalın sağlıcakla.

Kaynaklar

Node.js projeleri ile çalışırken birden farklı sürüm ile çalışmamız gerekebiliyor. Her projenin gereksinimleri farklı oluyor. Farklı sürümleri yönetmek için nvm (Node Version Manager - Nodejs Sürüm Yöneticisi) gibi güzel bir çözüm var. İşimizi kolaylaştıran ve bizi birçok dertten kurtaran güzel bir araç.

Nasıl kurulur

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

MacOS için yukarıdaki kodu terminale eklemek yeterli. Diğer işletim sistemler için nvm github sayfasında kurulum kısmına bakınız. Sonra terminali kapatıp açınca nvm kullanıma hazır.

Peki ihtiyacımız olan sürümü nasıl kuracağız. Kurabileceğimiz sürüm listesini

nvm ls-remote

komutunu terminale yazarak görebiliriz. Sonra buradan istediğimiz sürümü

nvm install 8.9.3

Yazmanız yeterli. Hemen nodejs sürümü yükleniyor ve kullanıma hazır hale geliyor.

Peki yüklü sürümler arasında nasıl geçiş yapıyoruz.

nvm use 6.9.4

Hop geçtik. Süper değil mi?

Yüklü nodejs sürümleri görmek için

nvm ls
         v4.4.2
->       v8.9.3
         system
default -> 8.9.3 (-> v8.9.3)
node -> stable (-> v8.9.3) (default)
stable -> 8.9 (-> v8.9.3) (default)
iojs -> N/A (default)
lts/* -> lts/carbon (-> v8.9.3)
lts/argon -> v4.8.7 (-> N/A)
lts/boron -> v6.12.2 (-> N/A)
lts/carbon -> v8.9.3

Peki her projeler arası geçişte böyle kod mu yazacağız? Onun içinde çözüm var.

Her proje klasörüne hangi nodejs sürümünü kullandığınıza dair bir nvm konfigürasyon dosyası eklemeniz yeterli.

/ .nvmrc (dosya adi)
6.94

Terminali kapatıp açın artık bu projede nvm use ile her geçişti nodejs sürümünü yazmanıza gerek yok.

Sonuç

Daha önce defalarca ismini duymama rağmen nvm ile bir sorunun çözümünü ararken kurma gereği duydum. Parceljs kurarken yaşadığım bir problemi çözmek için, sorunun çözümüne ilaç gibi geldi.

Kalın sağlıcakla.

Kaynaklar