Bir CSS satırında on modern düzen

Bu yayında, ciddi anlamda ağır işler yapan ve sağlam modern düzenler oluşturmanıza yardımcı olan birkaç etkili CSS satırı vurgulanmaktadır.

Modern CSS düzenleri, geliştiricilerin yalnızca birkaç tuşa basarak gerçekten anlamlı ve sağlam stil kuralları yazmalarına olanak tanır. Yukarıdaki konuşmada ve sonraki gönderide, ciddi anlamda ağır işler yapan 10 etkili CSS satırı ele alınıyor.

Bu demoları takip etmek veya kendi başınıza oynamak için yukarıdaki Glitch yerleştirmesine göz atın veya 1linelayouts.glitch.me adresini ziyaret edin.

01. Süper Ortalanmış: place-items: center

İlk "tek satırlı" düzen için tüm CSS dünyasının en büyük gizemini çözelim: şeyleri ortalama. place-items: center ile bunun düşündüğünüzden daha kolay olduğunu bilmenizi istiyorum.

İlk olarak display yöntemi olarak grid öğesini belirtin ve daha sonra aynı öğe üzerine place-items: center yazın. place-items, aynı anda hem align-items hem de justify-items için kullanılan bir kısaltmadır. center olarak ayarlandığında hem align-items hem de justify-items center olarak ayarlanır.

.parent {
  display: grid;
  place-items: center;
}

Bu, doğal boyutundan bağımsız olarak içeriğin üst öğe içinde mükemmel bir şekilde ortalanmasını sağlar.

02. Parçalanmış Pancake: flex: <grow> <shrink> <baseWidth>

Sırada, parçalanmış krep var. Bu düzen, örneğin, ürünün bazı özelliklerini açıklayan genellikle bir resim, başlık ve daha sonra bir metin içeren 3 öğeden oluşan bir satır içerebilen, pazarlama sitelerinde yaygın olarak kullanılan bir düzendir. Mobil cihazlarda, bunların düzgün bir şekilde üst üste yığılmasını ve ekran boyutunu büyüttükçe genişlemesini istiyoruz.

Bu efekt için Flexbox'ı kullandığınızda, ekran yeniden boyutlandırıldığında bu öğelerin yerleşimini ayarlamak için medya sorgularına ihtiyacınız olmaz.

flex kısaltması: flex: <flex-grow> <flex-shrink> <flex-basis> anlamına gelir.

Bu nedenle, kutularınızın <flex-basis> boyutuna kadar doldurulmasını, daha küçük boyutlarda küçültülmesini ancak fazla alanı dolduracak şekilde esnememesini istiyorsanız şunu yazın: flex: 0 1 <flex-basis>. Bu durumda <flex-basis>, 150px olduğu için şöyle görünür:

.parent {
  display: flex;
}

.child {
  flex: 0 1 150px;
}

Kutuların bir sonraki satıra geçerken uzatılıp alanı doldurmasını istiyorsanız <flex-grow> değerini 1 olarak ayarlayın.

.parent {
  display: flex;
}

.child {
  flex: 1 1 150px;
}

Şimdi, ekran boyutunu artırdığınızda veya azalttıkça bu esnek öğeler hem küçülür hem de büyür.

03. Kenar Çubuğunda Şöyle yazıyor: grid-template-columns: minmax(<min>, <max>) …)

Bu demo, ızgara düzenleri için minmax işlevinden faydalanır. Burada minimum kenar çubuğu boyutunu 150px olarak ayarlıyoruz ancak daha büyük ekranlarda bu boyut 25% değerine genişletiliyor. 25%, 150px değerinden küçülünceye kadar kenar çubuğu her zaman üst öğesinin yatay alanının 25% kadarını kaplar.

Bu değeri, şu değerle birlikte bir ızgara-şablonu-sütunu değeri olarak ekleyin: minmax(150px, 25%) 1fr. İlk sütundaki (bu örnekte kenar çubuğu) öğe, 25% için 150px minmax alır ve ikinci öğe (buradaki main bölümü) alanın geri kalanını tek bir 1fr kanal olarak kaplar.

.parent {
  display: grid;
  grid-template-columns: minmax(150px, 25%) 1fr;
}

04. Krep Grubu: grid-template-rows: auto 1fr auto

Destructed Pancake'den farklı olarak bu örnek, ekran boyutu değiştiğinde alt öğelerini sarmalamaz. Genellikle yapışkan altbilgi olarak adlandırılan bu düzen, genellikle hem web siteleri hem de uygulamalar için, mobil uygulamalarda (alt bilgi genellikle bir araç çubuğudur) ve web sitelerinde (tek sayfalık uygulamalar genellikle bu genel düzeni kullanır) kullanılır.

Bileşene display: grid eklediğinizde tek sütunlu bir ızgara elde edersiniz ancak ana alan yalnızca altında altbilgi bulunan içeriğin yüksekliği kadar olur.

Altbilginin en alta sığması için şunu ekleyin:

.parent {
  display: grid;
  grid-template-rows: auto 1fr auto;
}

Bu işlem, üstbilgi ve altbilgi içeriğini otomatik olarak alt öğelerinin boyutunu alacak şekilde ayarlar ve kalan alanı (1fr) ana alana uygular; auto boyutundaki satır ise alt öğelerinin minimum içeriğinin boyutunu alır. Bu nedenle, içerik boyutu büyüdükçe satırın kendisi de ayarlanacak şekilde büyür.

05. Klasik Kutsal Kase Düzeni: grid-template: auto 1fr auto / auto 1fr auto

Bu klasik kutsal çizelge düzeni için bir başlık, altbilgi, sol kenar çubuğu, sağ kenar çubuğu ve ana içerik bulunmaktadır. Önceki düzene benziyor ancak şimdi kenar çubukları var!

Bu tablonun tamamını tek bir satır kod kullanarak yazmak için grid-template özelliğini kullanın. Böylece hem satırları hem de sütunları aynı anda ayarlayabilirsiniz.

Özellik ve değer çifti: grid-template: auto 1fr auto / auto 1fr auto. Boşlukla ayrılmış birinci ve ikinci listeler arasındaki eğik çizgi, satırlar ve sütunlar arasındaki boşluktur.

.parent {
  display: grid;
  grid-template: auto 1fr auto / auto 1fr auto;
}

Üstbilgi ve altbilginin otomatik olarak boyutlandırıldığı son örnekte olduğu gibi, buradaki sol ve sağ kenar çubuğu çocuklarının doğuştan gelen boyutuna göre otomatik olarak boyutlandırılıyor. Ancak bu kez boyut, dikey (yükseklik) yerine yatay boyuttur (genişlik).

06. 12 Aralıklı Izgara: grid-template-columns: repeat(12, 1fr)

Sırada başka bir klasik var: 12 aralıklı tablo. repeat() işleviyle CSS'de hızlıca ızgara yazabilirsiniz. Izgara şablonu sütunları için repeat(12, 1fr); kullanıldığında 1fr değerinin her biri için 12 sütun sağlanır.

.parent {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
}

.child-span-12 {
  grid-column: 1 / 13;
}

Artık 12 sütunlu bir ızgaranız var ve alt öğelerimizi ızgaraya yerleştirebiliriz. Bunu yapmanın bir yolu, bunları kılavuz çizgileri kullanarak yerleştirmektir. Örneğin, grid-column: 1 / 13, ilk satırdan sonuncuya (13.) kadar ve 12 sütuna kadar yayılır. grid-column: 1 / 5;, ilk dördü kapsar.

Bunu yazmanın diğer bir yolu da span anahtar kelimesini kullanmaktır. span ile, başlangıç çizgisini ve ardından bu başlangıç noktasından kaç sütunun içine dahil edileceğini belirlersiniz. Bu durumda grid-column: 1 / span 12 değeri grid-column: 1 / 13, grid-column: 2 / span 6 ise grid-column: 2 / 8 olarak karşılık gelir.

.child-span-12 {
  grid-column: 1 / span 12;
}

07. RAM (Tekrar, Otomatik, Min.): grid-template-columns(auto-fit, minmax(<base>, 1fr))

Bu yedinci örnek için, otomatik olarak yerleştirilmiş ve esnek alt öğeleri içeren duyarlı bir düzen oluşturmak üzere daha önce öğrendiğiniz kavramlardan bazılarını birleştirin. Çok kullanışlı. Burada unutulmaması gereken temel terimler, RAM kısaltmasından hatırladığınız repeat, auto-(fit|fill) ve minmax()''dir.

Tümü birlikte şöyle görünür:

.parent {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}

Tekrar tekrar kullanıyorsunuz, ancak bu kez açık bir sayısal değer yerine auto-fit anahtar kelimesini kullanıyorsunuz. Bu, söz konusu alt öğelerin otomatik olarak yerleştirilmesini sağlar. Bu çocukların taban minimum değeri de 1fr maksimum değerine sahiptir. Yani, daha küçük ekranlarda 1fr genişliğinin tamamını kaplarlar ve her biri 150px genişliğe ulaştıkça aynı çizgiye yönelmeye başlarlar.150px

auto-fit kullanıldığında, kutular, yatay boyutu 150 pikseli aştığı için kalan tüm alanı dolduracak şekilde uzatılır. Ancak bunu auto-fill olarak değiştirirseniz minmax işlevindeki taban boyutları aşıldığında genişlemez:

.parent {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
}

08. Diziliş: justify-content: space-between

Bir sonraki düzende, burada ilk ve son alt öğeleri sınırlayıcı kutularının kenarlarına yerleştiren ve kalan boşluk öğeler arasında eşit olarak dağıtılacak şekilde burada gösterilecek olan justify-content: space-between yer alır. Bu kartlar için Flexbox görüntü moduna yerleştirilir ve yön, flex-direction: column kullanılarak sütuna ayarlanır.

Böylece başlık, açıklama ve resim bloğu, üst kartın içindeki dikey bir sütuna yerleştirilir. Daha sonra, justify-content: space-between uygulandığında ilk (başlık) ve son (resim bloğu) öğeler flexbox'ın kenarlarına sabitlenir ve bunların arasındaki açıklayıcı metin, her uç noktayla eşit aralıkla yerleştirilir.

.parent {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

09. Stilimi Sabitleme: clamp(<min>, <actual>, <max>)

Burada daha az tarayıcı desteğine sahip bazı teknikleri ele alıyoruz, ancak düzenler ve duyarlı kullanıcı arayüzü tasarımı için gerçekten heyecan verici bazı etkileri var. Bu demoda, genişliği sabitleyiciyi kullanarak şu şekilde ayarlayacaksınız: width: clamp(<min>, <actual>, <max>).

Bu, mutlak bir minimum ve maksimum boyut ile gerçek bir boyut ayarlar. Değerler kullanılarak aşağıdakiler gibi görünebilir:

.parent {
  width: clamp(23ch, 60%, 46ch);
}

Burada minimum boyut 23ch veya 23 karakter, maksimum boyut ise 46ch 46 karakterdir. Karakter genişliği birimleri, öğenin yazı tipi boyutuna (özellikle 0 glifin genişliği) bağlıdır. "Gerçek" boyut %50'dir ve bu, bu öğenin üst genişliğinin% 50'sini temsil eder.

clamp() işlevinin burada yaptığı, bu öğenin %50 genişliği 46ch değerinden büyük (daha geniş görüntü alanlarında) veya 23ch değerinden küçük (daha küçük görüntü alanlarında) %50'ye kadar %50'yi korumasını sağlamaktır. Üst öğe boyutunu genişletip daralttıkça, bu kartın genişliğinin sabitlenmiş maksimum noktasına yükseldiğini, sabitlenmiş minimum değerine düştüğünü görebilirsiniz. Daha sonra, ortalamak için ek özellikler uyguladığımızdan, üst öğede ortalanmış olarak kalır. Metin çok geniş (46ch üzerinde) veya çok dar ve dar (23ch boyutundan az) olmayacağından, bu şekilde düzenler daha okunaklı olur.

Bu, duyarlı yazı biçimi uygulamak için de harika bir yoldur. Örneğin, font-size: clamp(1.5rem, 20vw, 3rem) yazabilirsiniz. Bu durumda, bir başlığın yazı tipi boyutu her zaman 1.5rem ile 3rem arasında sabitlenmiş olarak kalır ancak görüntü alanının genişliğine sığacak şekilde 20vw gerçek değerine göre büyüyüp daralır.

Bu, minimum ve maksimum boyut değeriyle okunabilirliği sağlamak için harika bir tekniktir. Ancak tüm modern tarayıcılarda desteklenmediğini unutmayın. Bu nedenle, yedeklerinizin olduğundan emin olun ve testlerinizi yapın.

10. En Boy Oranına Saygı: aspect-ratio: <width> / <height>

Son olarak, bu son düzen aracı, bu diğerleri arasında en deneysel olanıdır. Kısa süre önce Chromium 84'te Chrome Canary'de kullanıma sunulmuştur ve Firefox'un bunu uygulamak için aktif bir çabası vardır, ancak şu anda kararlı hiçbir tarayıcı sürümünde bulunmamaktadır.

Fakat bu çok sık karşılaşılan bir sorun olduğu için bahsetmek istiyorum. Bu da basitçe, resmin en boy oranını korumaktan ibarettir.

aspect-ratio özelliği ile kartı yeniden boyutlandırırken yeşil görsel blok, bu 16 x 9 en boy oranını korur. aspect-ratio: 16 / 9 ile En Boy Oranına Uyuyoruz.

.video {
  aspect-ratio: 16 / 9;
}

Bu özellik olmadan 16 x 9 en boy oranını korumak için bir padding-top saldırısı kullanmanız ve en yüksek genişlik oranını ayarlamak üzere 56.25% değerine sahip bir dolgu vermeniz gerekir. Saldırıyı ve yüzdeyi hesaplama zorunluluğunu önlemek için kısa süre içinde buna yönelik bir özelliğimiz de olacak. 1 / 1 oranında bir kare, 2 / 1 oranıyla 2'ye 1 oranında bir kare ve bu resmin belirli bir boyut oranıyla ölçeklenmesi için ihtiyacınız olan her şeyi oluşturabilirsiniz.

.square {
  aspect-ratio: 1 / 1;
}

Bu özellik hâlâ geliştirmede ve yakında kullanıma sunulacak olsa da özellikle video ve iframe'ler söz konusu olduğunda, birçok kez geliştirici mücadelesiyle karşılaştığım gerçeği ortadan kaldırdığı için bilinmesi faydalıdır.

Sonuç

10 güçlü CSS satırındaki bu yolculuğu izlediğiniz için teşekkür ederiz. Daha fazla bilgi edinmek için videonun tamamını izleyin ve demoları kendiniz deneyin.