zingat.com‘da kullanıcı oranı % 1.7 seviyelerine düşen Internet Explorer 11 desteğini yakın zamanda sonlandıracağız. Bunun biz kod yazarlarına bazı kazançları olacak. Bunların başında javascript ES6 standardına geçme imkanı sağlaması olacaktır. Bu geçişi Babel ile daha önce de yapabilirdik ancak nasip olmadı. Nasip IE’yi bitirme adımı sonrasınaymış. Bu geçiş sürecinde yaptığımız değişiklik ve yenilikleri buraya yazmayı düşündüm ve hayata geçiriyorum.

İlk madde: Strict Mode

ES5 ile seçmeli olarak gelen Strict Mode kullanımı ES6 ile birlikte başlangıçta geliyor. Javascript esnek bir betik dili olarak hayatına başladı. Sonra geliştikçe ve dil olmaya başladıkça diyelim kurallar gelişmeye ve insanları bu kurallara zorlamaya başladı. Şimdi bu kurallara uymak zorunlu demeye başlıyor.

Javascript katı kuralları kullan (Strict Mode) hakkında daha detaylı bilgiye kaynaklar kısmında yer verdiğim Türkçe kaynaklardan ulaşabilirsiniz.

ES5 ile birilikte eğer projemizde bu kurallara uymalısınız demek için

'use strict';

kodunu kodumuzun veya kod blokumuzun içine yazmamız gerekiyordu.

ES6 sonrası bu satırı yazmaya gerek yok. :)

Doğan‘ın uyarısıyla bir düzeltme yapacağım; ES6 sadece module kodu içinde ‘use strict’ kullanmaya gerek duymuyor. https://stackoverflow.com/questions/31685262/not-recommended-to-use-use-strict-in-es6/31685340#31685340

Kalın sağlıcakla.

Kaynaklar

İlk yazıyı yazdıktan sonra hangi özellikleri kullandığıma daha çok dikkat etmeye başladım. Hemen başlayalım. Sırayla yazalım.

1. CSS değişikliklerini geri almak

chrome styles

Styles sekmesinde yaptığımız değişiklikleri geri almak için alışık olduğumuz kısayolu kullanabiliyoruz.

  • Cmd + Z (Windows/Linux: Ctrl + Z)

2. Ekran görüntüsü almak

Daha önce bunun için eklenti kullanıyordum. DevTools bunu kendi yapıyor artık.

chrome full screenshot

Komut menüsünü açıp Cmd+Shift+P (Mac) Ctrl+Shift+P (Windows, Linux) screenshot yazınca gelen seçeneklerden “Capture full size screenshot” tıklayınca bulunduğunuz sayfanın tam sayfa ekran görüntüsünü alabiliyoruz.

3. Sadece belli alanın ekran görüntüsünü almak

chrome lokal screenshot

Sadece sayfanın belli bir yerinin ekran görüntüsünü almak için denetle(inspect) Command+Shift+C (Mac) veya Control+Shift+C (Windows, Linux) aktifleştirdikten sonra Command (Mac) veya Control (Windows, Linux) butonuna bastıktan sonra fare ile seçmek istediğimiz alanı bir kutu içine almamız yeterli.

4. Animasyon tiplerini değiştirmek

animation-timing-function ve transition-timing-function özellikleri değerlerini DevTools üzerinden değiştirip sonuçlarını görebiliyoruz.

chrome animasyon tipi degiştirmek

Solda üç adet seçim var ayrıca soldan sçeim yapınca altta sağ-sol ok çıkıyor buradan diğer değerlere geçiş yapıp sonuçlarını görebiliyoruz. Bildiğin IDE tool’u mübarek.

5. CSS değerleri arttırmak/azaltmak

DevTools Styles panelinde değişiklik yaparken çok fazla kullandığım bir özellik. İnsan değerini olmayınca anlıyor. Safari Developer Tool’unda bulmayınca çok aradım :)

devtools arttırma azaltma

Birer birer, onar onar, yüzer yüzer ve ondalık sayılarda arttırma ve azaltma kısayolları

  • Yukarı/Aşağı (Mac, Windows, Linux) = +/-1
  • Alt + Yukarı/Aşağı (Mac, Windows, Linux) = +/-0.1
  • Shift + Yukarı/Aşağı (veya PgUp/PgDn) (Mac, Windows, Linux) = +/-10
  • Cmd + Yukarı/Aşağı (Mac) Shift + PgUp/PgDn (Windows, Linux) = +/-100

6. Bazı kütüphane scriptlerini hata ayıklama dışında tutmak

Javascript kodlarımızdaki hataları ayıklarken DevTools kullandığımız harici kütüphaneleri de hata ayıklama sürecine sokar, bu gibi durumlarda hata ayıklama süreçleri gereksiz fonksiyon ve kodlarda dolaşır. Bu gibi durumları engellemek için istemediğimiz script kodlarını hata ayıklama akışı dışına çıkarma imkanımız var.

hata ayıklama dışında tut

Ben genelde jQuery kütüphanesini hata ayıklama dışında tutuyorum.

7. Arama yaparken CSS selector kullanmak

Elements panelinden arama yaparken CSS seçicilerini kullanabiliyoruz.

css seçicileri kullanma imkanı

İlk başta çok kullanmıyordum ama son zamanlarda çok işime yarıyor.

8. HTML düzenlerken kapanış etiketini otomatik değiştirmek

Chrome DevTools’u editör gibi kullandığımız için bazı editör özelliklerini görmek sevindirici. Elements panelinden bir HTML etiketini seçip değiştirdiğimde kapatma etiketini kendi otomatik değiştirmesi çok süper.

etiket kapma otomatik

9. Console panelde yakaladığım elmanı Elements panelinde yakalamak

Başlıkta yazmışım açıklamayı :)

console panelde seçilen eleman

Tıkladıktan sonra

console dan element paneline

10. Eleman CSS durumları

İlk başta yazmam gerek özelliklerden birisi. DevTools bir elemanın farklı CSS durumlarını yakalamamıza ve bu durumlara atanan özellikleri görmemiz, değiştirmemiz ve silmemize olanak sağlar.

CSS durumları

Yukarıda görüldüğü gibi Styles panelinde :hov bölümüne tıklayınca o elemana özel CSS durumları çıkıyor. Çıkan durumları işaretleyince altta ilgili elemanın o durmuna ait atanmış özellikler görülecektir.

Kaynaklar

Tipografinin web sitelerinde önemli bir yeri var. Yazı tipi tasarım ve okunabilirlik açısından bakıldığında gerekli bir öğedir.

Yazı tiplerini sistemde yüklü yazı tipleri ve özel yazı tipleri diye ikiye ayırabiliriz. Bu makalede özel yazı tipleri üzerine duracağız.

Geçmişten beri özel yazı tiplerini sayfalarımıza eklemenin farklı yöntemlerini denedik. (Örn: sFIR, cufon, resim vb. ) Günümüzde artık bu daha kolay. @font-face ile özel yazı tiplerini sayfalarımıza kolayca ekleyebiliyoruz.

Özel yazı tipleri hakkında daha fazla bilgiye sahip olmalıyız. Nasıl yüklenir? Yükleme sırası nasıldır? Bu yazıda bu konulara biraz değineceğiz.

Özel yazı tipi tarayıcılar tarafından nasıl yüklenir ve yorumlanır?

Tarayıcıların bir html dokümanı nasıl yorumladığını aşağıdaki diyagram göstermektedir.

tarayıcı html nasıl tarar

Yukarıdaki grafikte görüldüğü gibi tarayıcılar özel yazı tiplerinin yüklenmesi için önce DOM ve CSSOM’un oluşmasını bekler. Sonra özel yazı tipini yükler ve duruma göre içeriği işler. Özel yazı tiplerinin yüklenmesine kadar geçen sürede içeriğin nasıl görüneceği konusunda tarayıcıların farklı davranışları vardır. Bu farklılıkları inceleyelim.

Özel yazı tipi yükleme farklılıkları

Yazı tiplerinin yüklenmesinde iki farklı yöntem var. Tarayıcıların tercih ettiği iki yöntemi kısaca açıklayalım.

  • “flash of invisible text” (FOIT): Özel yazı tipi yüklenene kadar yazıları göstermeyen yöntem “flash of invisible text” (FOIT) baş harflerinden oluşan bir kısaltma ile anılır. Yazı tipini gösterme, yüklenince bir seferde uygula mantığı.

  • “flash of unstyled text” (FOUT): Özel yazı tipi yüklenene kadar sistemde yüklü olan yazı tipini gösterip özel yazı tipi yüklenince özel yazı tipine geçen metot. Standart yazı tipi ile göster, özel yazı tipi yüklenince tekrar tara ve göster mantığı.

İlk yöntemi uygulayan tarayıcılar kullanıcıyı özel yazı tipi yüklenene kadar metni göstermemenin kullanıcı deneyimi açısından kötü bir davranış olduğuna karar verdi. Bu durumu çözmek için kullanıcıyı bekletme süresine limit getirdiler. Bekleme süresi olarak 3 saniye belirlediler. Kullanıcı 3sn içinde özel yazı tipini yüklediyse yazıları tarayıp gösteriyor, 3sn içinde hala yüklenmediyse standart yazı tipi ile gösterip yüklendikten sonra tekrar tarayıp gösteriyor. Aslında bu ara bir çözüm 3 saniyeye kadar FOIT, 3 saniyeden sonra FOUT gibi davranıyor.

Tarayıcıların bu konudaki tavırlarını gösteren liste aşağıdaki gibidir.

Tarayıcı Zaman aşım süresi Standart
Chrome 3sn FOIT
Opera 3sn FOIT
Firefox 3sn FOIT
Safari 3sn FOIT
IE/EDGE 0sn FOUT

Özel yazı tipi yükeleme peryotları

Yukarıdaki grafikte sıra özel yazı tipine gelmesi ve içerğin işlenmesi arasındaki zaman üçe bölünür.

  • Bloklama peryodu: İlk periyod bloklama peryodudur. Eğer özel yazı tipi yüklenmemişse özel yazı tipini kullanacak eleman gizlenir. Eğer özel yazı tipi bu süre zarfında yüklenirse hemen uygulanır.

  • Geçiş peryodu: Bloklama peryodundan hemen sonra gelir. Özel yazı tipi bu peryodda da yüklenmemişse özel yazı tipini kullananan yerler standart yazı tipi ile işlenir. Eğer bu süre zarfında özel yazı tipi yüklenirse özel yazı tipi uygulanır.

  • Başarısızlık peryodu: Geçiş peryodundan sonraki peryoddur. Bu peryod başladığında hala özel yazı tipi yüklenmediyse özel yazı tipinin bulunamadığı anlamına gelir ve tarayıcı standart yazı tipi ile içeriği işler.

font-display özelliği

font-display özelliği özel yazı tipi dosyalarının nasıl yükleneceği ve görüntüleneceğini belirler. @font-face tanımı içinde kullanılır. Özel yazı tipi peryotlarını yönetmemize olanak sağlar.

Yapısı : font-display: [ deger ]
Aldığı Değerler : auto | block | swap | fallback | optional
Başlangıç değeri: auto
Uygulanabilen elementler: Belirtilen elemana
Kalıtsallık: Yok

  • auto: Özel yazı tipi yükleme stratejisine tarayıcı karar versin demektir. Çoğu zaman block değeri ile aynı davranır.

  • block: Özel yazı tipi yüklenene kadar metni gizler. Daha doğru bir anlatım ile tarayıcı metinleri görünmez bir yertutucu ile çizer ve yazı tipi yüklenince yazı tipinin belirlediği şekliyle tekrar çizer. FOIT davranışı sergiler.

  • swap: Blok peryodun olmadığı geçiş peryodunun süresiz olduğuğu tanım. Özel yazı tipi yüklenene kadar sisteminin standart yazı tipi ile göstermesini sağlar. FOUT davranışı.

  • fallback: auto ve swap arası bir davranıştır. Tarayıcı 100ms kadar metni gizle eğer yüklenmediyse standart yazı tipi ile gösterir. Yüklendikten sonrada özel yazı tipine geç.

  • optional: Tarayıcı 100ms kadar kısa bir süre özel yazı tipinin yüklenmesi bekler ve yüklenmediyse sistemde yüklü yazı tipi ile içeriği gösterir. fallback ile benzerdir. fallback’den farklı olarak geçiş süresi olmayan bir seçenektir.

font-display özelliği bize FOUT ve FOIT davranışlarını seçme ve harmanlama imkanı sağlıyor.

Test için yukarıdaki sayfayı ayrı bir pencerede açıp Chrome Dev Tools’dan bağlantı hızınızı Slow 3G yapıp sonrada Empty Cache and Hard Reload ile sayfayı yüklerseniz font-display özelliği değerleri arasındaki farkı görebilirsiniz.

Ayrıca https://font-display.glitch.me/ sitesindeki örnek ve Umar Hansa’nın https://www.youtube.com/watch?v=yRrrL0Mg1pM&t=518s anlatımı uygulamada nasıl göründüğünü görmek için güzel kaynaklar.

Tarayıcı Desteği

Chrome explorer Firefox
+ - +

Mobil Tarayıcılar

Chrome Mobil Safari Samsung Internet
+ 11.3 6.2

Sonuç

Tarayıcı desteği kousunda sorunlu. iOS’un 11.3 ile birlikte bu özelliği desteklemesi büyük avantaj. Samsung Internet desteği de gelirse süper olur. iOS 11.3’ün yaygınlaşmasından sonra da kullanılabilir. iOS sürümlerinin yayılması 3 ay aldığı düşünülürse 3 ay sonra(Temmuz 2018) kullanabiliriz.

Sağlıcakla kalın.

Kaynaklar