Düzelt: min-content codepen paylaşımı yanlıştı düzettik. Düzeltme uyarısı için L. Arman Özak‘a teşekkürler

  1. CSS Grid’e (Izgara) Giriş
  2. CSS Grid Özellikleri
  3. fr birimi
  4. CSS Izgara çizgi isimlendirmesi ve kullanımı
  5. Sayfa planlama sihirbazı grid-template-areas
  6. Explicit(belirlenmiş) ve implicit(belirlenmemiş) grid ögeleri

CSS grid makalelerimizin bu 7. sinde sizlere minmax() işlevini anlatmaya çalışacağım. CSS grid standartları ilk yazılmaya başlandığında çok karmaşık ve anlaşılması zor diye mesafeli yaklaşıyordum ancak beraberinde getirdiklerini öğrendikçe ve uyguladıkça daha iyi anlıyor ve seviyorum.

CSS minmax işlevi tanımlandığı grid ögesine en az (min) verilen değerine eşit ve daha büyük ve en fazla (max) değerine eşit ve daha küçük bir boyut aralığı tanımlar. Sadece CSS grid içinde kullanılır.

minmax(min, max)

İlk parametresi minimum değeri, ikinci parametresi maksimum değeri belirler.

Maksimum değeri eğer minimum değerden küçükse maksimum değeri tarayıcı tarafından yorumlanmaz ve minimum değer uygulanır.

Minimum değer fr birimli değer alamaz, maksimum değer fr birimli değer alabilir.

CSS minimax işlevi 5 farklı birimde değer alır.

  1. Ölçü değerleri (px, em, vm, vh, …)
  2. Esnek değerler (fr)
  3. max-content
  4. min-content
  5. auto

Bu değerlere göz atalım.

Ölçü değerleri

Ölçü değerleri, CSS uzunluk (px, em, vm vh, …) değerleri ve yüzde değerlerdir. Tanımlanan değer kolon genişliğini belirler ve eksi değer alamaz. Örneğin 25%, 250px, 100vw gibi.

Ölçü değerleri minmax işlevinin en basit halini gösterir.

.kapsayici {
    display: grid;
    grid-template-columns: minmax(80px, 240px) 100px 100px;
}

CSS grid minmax sabit ölçüleri

Kapsayıcı eleman için tanımlanmış grid-template-columns değeriyle 2. ve 3. ögeler 100px ile sabitlenmişken 1. öge görüntülenen alanın genişliğine göre en az 100px en fazla 200px genişlik değeri alır.

Yüzde değerlerine bir örnek yapalım.

.kapsayici {
    display: grid;
    grid-template-columns: minmax(50%, 80%) 100px 100px;
}

Esnek değer (fr)

Esnek değer, fr(ing. fraction) birimi ‘kesir’ anlamına gelir. px veya % gibi bir uzunluk değil, bunun yerine ‘esnek’ bir birim olarak kabul edilir. CSS grid ile birlikte gelen bir değerdir. Kullanılabilir alanı tanımlamamızı sağlayan esnek bir birimdir. Daha detaylı bilgi için fr birimi yazımıza göz atınız.

.kapsayici {
display: grid;
grid-template-columns: minmax(50%, 1fr) 1fr 1fr;
}

CSS grid minmax esnek değerler

Esnek değerler ile uyumlu bir yapı kazanır grid ögelerimiz.


min-content ve max-content tanımları

max-content

Izgara izi içindeki boşluklar da dahil en geniş içerikli ögesinin değeridir. Metin bir alt satıra kaydırılmadan boyut ölçülür.

.kapsayici {
  display: grid;
  grid-template-columns: minmax(max-content, 1fr) 1fr 1fr;
}

CSS grdi minmax max-content

Diğer kutular genişlik daralınca iki satıra düşerken max-content tanımlı kutu içeriğininin uzunluğunca sabit kalıyor.

min-content

Izgara izi içindeki ızgara ögesinin en az daraldığı durumdaki değeridir. Metin taşmadan daralabileceği en son noktadaki değerdir ya da ızgara ögesi içindeki satır içi ögenin genişliği kadardır.

.kapsayici {
  display: grid;
  grid-template-columns: minmax(min-content, min-content) minmax(max-content, max-content) 1fr;
}

CSS grid minmax min-content

min-content tanımlanan eleman scroll çıkmadan ufalacağı en dar genişliğe gelir.

auto

auto tanımlanan grid ögesi en fazla max-content değeri kadar, en az min-content değeri kadar değer alır.

.kapsayici {
  display: grid;
  grid-template-columns: minmax(auto, auto) 1fr 1fr;
}

CSS grid minmax auto

Kaynaklar

Learning React / Alex Banks, Eve Porcello Yaklaşık 1 senedir react öğreniyorum. Bu süreçte birçok kaynaktan yararlandım. Tabi en büyük yardımı sağolsun Erdal SATIK‘tan aldım.

Bu süreçte görsel ve yazılı birçok kaynaktan faydalandım ve faydalanıyorum, bunlardan aklımda kalan önemli iki tanesi:

Burada kitaptan biraz bahsedeyim. Kitap yeni React’a başlayanlar için bence çok iyi.

React’a başlamadan önce öğrenmemiz gereken ES6 ve fonksiyonel programlama hakkında detaylı ve güzel bölümleri mevcut. ES6 hakkında çoğu kaynak bilgi verirken fonksiyonel programlama hakkında bilgi vermiyor. Fonksiyonel programlama önemli bir konu ve öğrenilmeden geçilmemesi gerekiyor. Ayrıca arayüz geliştirici dünyasının önemli giriş araçları webpack ve babel hakkında bilgiler sunuyor. React ve redux bölümleri de çok güzel.

Kitabın ana başlıkları

  • Yükselen Javascript (ES6)
  • Javascript ile fonksiyonel programlama
  • Yalın React
  • JSX ile React
  • Hata ayıklama
  • Redux
  • Komponent kullanımı
  • Komponent yaşam döngüsü (lifecycle) metotları
  • Test yazma
  • React Router

şeklinde. Bu arada kitabın 2. baskısı çıkmış.

Kitabı işe gidip gelirken metroda iki kere okudum. Sizlere de tavsiye ederim.

CSS’te tüm özelliklere atanan 4 değer vardır. initial, inherit, unset ve revert. Burada bu değerlere değineceğiz. unset ‘ten bir önceki yazımda bahsettik. Yaptıkları iş aynı olsa da uygulandıklarında farklı davranış sergilerler. Yaptıkları iş atamaları geri almak. Amiyane tabirle geri vites.

Bu makaledeki değerleri anlamak için CSS’te değerlerin nasıl uygulandığını hatırlamak gerekiyor. Burada genel anlamıyla bir değerin nasıl uygulandığını anlatalım.

Bu konuyu 1. kitabımdaki 4.bölümünde bahsetmiştim. Belki ileride başka bir yazıda daha detaylı bir makale yazabiliriz bu konuda.

Basamaklı (cascade) yapı

CSS değerleri atandığında eğer bu tanım ve değer tek ise direk uygulanır ancak CSS tanımlarının çakışması durumunda çözümü sağlayan Basamaklı yapıdır (Cascade).

Örneğin font-size tanımı birden fazla css dosyasında veya bir dosya içinde birden fazla tanımlanmış olabilir.

CSS’e bu tanımlar 3 ana kaynaktan gelir.

  1. Geliştiricinin eklediği değerler. Kodu yazan geliştirici.

  2. Kullanıcının tarayıcı ayarlarında tanımladığı değerler. Tarayıcıyı kullanan son kullanıcı.

  3. Tarayıcının kabul ettiği bağlangıç değeri. Tarayıcı kabulleri

Basamaklı yapı bu üç kaynağı birleştirir. Aynı tanımların atandığı durumlar için önem, etkinlik ve sıralama ölçüsünü dikkate alarak sonuç değerini bulur ve uygular.

Son kullanıcının tarayıcı ayarlar kısmından yaptığı atamalar (2. nolu seçenek) genelde göz ardı edilir.

Aşağıda tanımlayacağımız değerler bu 2 kaynaktan gelen atamaları geri alamaya yöneliktir.

initial (başlangıç) değeri

initial değeri tarayıcıların atadığı başlangıç değerini ifade eder. Atandığı elemanın özelliğinin değerini tarayıcının belirlediği değere döndürür.

Tarayıcılar HTML elemanlarını yorumlarken belirli başlangıç değerleri kabul ederek yorumlarlar. User Agent Stilleri olarak adlandırılan bu özelliklere sonradan tanımlanan CSS özellikleri ezer. Her tarayıcının kendine özel UA Stillleri vardır. CSS3 ile gelen initial değeri ile başlangıç değerine döndürme imkanımız oluyor.

Örnekte görüldüğü gibi kapsayıcı div elemanına atanan kırmızı rengi ilk paragraf için initial değeri ile tarayıcının ilk kabul değerine(siyah) döndürülmüştür.

Tarayıcı Desteği

Chrome explorer Firefox
+ - +

Mobil Tarayıcılar

Chrome Mobil Safari Samsung Internet
+ + +

inherit (kalıtsal) değeri

inherit değeri ebveyn elemanların alttaki elemanlara aktardığı değeri gösterir. Ebeveyn elemanda bir tanım yoksa revert gibi davranır. Atandığı elemanın özelliğinin değerini varsa ebeveyninde bulunan değere döndürür.

Kalıtsallığı kullanarak kodlarımızı azaltabiliriz. Ancak kalıtsallık nedeni ile de birçok sorunla karşılaştığımızı da unutmayalım.

Tarayıcı Desteği

Chrome explorer Firefox
+ + +

Mobil Tarayıcılar

Chrome Mobil Safari Samsung Internet
+ + +

unset (sıfırlama)

Bir önceki makalede yazdığımız gibi unset değeri atanan bir özellik eğer kalıtsal bir değer alıyorsa kalıtsal değerine döndürür, kalıtsal değeri yoksa başlangıç değerine döndüren bir kısayoldur.

Tarayıcı Desteği

Chrome explorer Firefox
+ - +

Mobil Tarayıcılar

Chrome Mobil Safari Samsung Internet
+ + +

revert (geri alma)

Bir elemana revert değeri atandığında geliştiricinin atadığı değerleri geri alır.

unset ile revert değerlerinin farkı: unset hem browser’ın hem de geliştiricinin atadığı değeri sıfırlarken, revert ise sadece geliştiricinin atamalarını sıfırlar.

not revert ve unset önceki atamaları siler ancak kalıtsallık aktiftir. Kalıtsallığı da etkisiz hale getirmek istiyorsanız. Bir elemana geliştiricinin atama yapmadığından eminseniz, ebebeynine initial ataması yapıp, eleman da revert tanımıyla bunu sağlayabilirsiniz.

Tarayıcı desteği konusunda initial, inherit ve unset iyiyken revert blink grubunun desteği olmadığı için düşük kalmış.

Tarayıcı Desteği

Chrome explorer Firefox
- - +

Mobil Tarayıcılar

Chrome Mobil Safari Samsung Internet
- + -

Šime Vidas‘ın yazısında ki çağrısını ben de burada tekrarlıyayım. Google bug sayfasındaki yıldıza bir tıklama da siz ekleyin.

Kalın sağlıcakla.

Kaynaklar