CSS sarmalandı: 2023

CSS Wrapped başlığı

CSS Özetiniz: 2023!

İnanılmaz! 2023, CSS için çok önemli bir yıl oldu.

#Interop2023'ten CSS ve kullanıcı arayüzü alanında, geliştiricilerin web platformunda bir zamanlar imkansız olduğunu düşündüğü özellikleri mümkün kılan birçok yeni gelişmeye kadar. Artık her modern tarayıcı; kapsayıcı sorgularını, alt ızgarayı, :has() seçiciyi ve çok sayıda yeni renk alanını ve işlevini destekliyor. Chrome'da yalnızca CSS ile kaydırmaya dayalı animasyonlar ve görünüm geçişleriyle web görünümleri arasında sorunsuz animasyon desteği sunuyoruz. Ayrıca, CSS iç içe yerleştirme ve kapsamlı stiller gibi daha iyi geliştirici deneyimleri için birçok yeni temel özellik kullanıma sunuldu.

Ne yıldı ama! Bu nedenle, bu dönüm noktası niteliğindeki yılı, tüm bunları mümkün kılan tarayıcı geliştiricilerinin ve web topluluğunun sıkı çalışmasını kutlayarak ve takdir ederek sonlandırmak istiyoruz.

Mimari temeller

Temel CSS dilinde ve özelliklerinde yapılan güncellemelerle başlayalım. Bunlar, stilleri oluşturma ve düzenleme şeklinizin temelini oluşturan ve geliştiricilere büyük güç veren özelliklerdir.

Trigonometrik fonksiyonlar

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 108.
  • Safari: 15.4.

Source

Chrome 111, sin(), cos(), tan(), asin(), acos(), atan() ve atan2() trigonometrik fonksiyonları için destek ekleyerek bu fonksiyonları tüm büyük motorlarda kullanılabilir hale getirdi. Bu işlevler, animasyon ve düzen amaçları için çok kullanışlıdır. Örneğin, öğeleri seçilen bir merkezin etrafındaki daireye yerleştirmek artık çok daha kolay.

Trigonometrik fonksiyonlar demosu

CSS'deki trigonometrik işlevler hakkında daha fazla bilgi edinin.

Karmaşık nth-* seçimi

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 9.

:nth-child() sözde sınıf seçicisi ile DOM'daki öğeleri dizinlerine göre seçmek mümkündür. An+B microsyntax'ı kullanarak hangi öğeleri seçmek istediğiniz üzerinde hassas kontrol sahibi olursunuz.

Varsayılan olarak :nth-*() sözde sınıfları tüm alt öğeleri dikkate alır. Chrome 111'den itibaren, isteğe bağlı olarak :nth-child() ve :nth-last-child() işlevlerine bir seçici listesi iletebilirsiniz. Bu sayede, An+B işlemi yapmadan önce çocukların listesini önceden filtreleyebilirsiniz.

Aşağıdaki demoda, 3n+1 mantığı yalnızca küçük bebeklere uygulanır. Bu bebekler, of .small kullanılarak önceden filtrelenir. Kullanılan seçiciyi dinamik olarak değiştirmek için açılır listeleri kullanın.

Karmaşık nth-* seçimi demosu

Karmaşık nth-* seçimleri hakkında daha fazla bilgi edinin.

Kapsam

Browser Support

  • Chrome: 118.
  • Edge: 118.
  • Firefox: 146.
  • Safari: 17.4.

Source

Chrome 118'de, seçici eşleşmesini dokümanın belirli bir alt ağacıyla sınırlamanıza olanak tanıyan bir @kuralı olan @scope için destek eklendi. Kapsamlı stil oluşturma sayesinde, aşırı derecede belirli seçiciler yazmak veya bunları DOM yapısıyla sıkı bir şekilde bağlamak zorunda kalmadan hangi öğeleri seçeceğiniz konusunda çok net olabilirsiniz.

Kapsamlı bir alt ağaç, bir kapsam kökü (üst sınır) ve isteğe bağlı bir kapsam sınırı (alt sınır) ile tanımlanır.

@scope (.card) {  } /* scoping root */
@scope (.card) to (.card__content) {  } /* scoping root + scoping limit*/

Bir kapsam bloğunun içine yerleştirilen stil kuralları yalnızca oyulmuş alt ağaçtaki öğeleri hedefler. Örneğin, aşağıdaki kapsamlı stil kuralı yalnızca .card öğesi ile [data-component] seçicisi tarafından eşleştirilen herhangi bir iç içe yerleştirilmiş bileşen arasında bulunan <img> öğelerini hedefler.

@scope (.card) to ([data-component]) {
  img {  }
}

Aşağıdaki demoda, uygulanan kapsam sınırı nedeniyle carousel bileşenindeki <img> öğeleri eşleştirilmiyor.

Kapsam Demosu Ekran Görüntüsü

Reference screenshot for the @scope demo

Scope Live Demosu

CSS @scope demosu

@scope hakkında daha fazla bilgiyi "Seçicilerinizin erişimini sınırlamak için @scope nasıl kullanılır?" başlıklı makalede bulabilirsiniz. Bu makalede, :scope seçicisi, özgüllüğün nasıl ele alındığı, önsüz kapsamlar ve basamaklandırmanın nasıl etkilendiği hakkında bilgi edineceksiniz.@scope

İç içe yerleştirme

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 117.
  • Safari: 17.2.

Source

İç içe yerleştirmeden önce her seçicinin birbirinden ayrı olarak açıkça bildirilmesi gerekiyordu. Bu durum, tekrar, stil sayfası hacmi ve dağınık bir yazma deneyimine yol açıyordu. Artık seçiciler, ilgili stil kuralları gruplandırılmış şekilde devam ettirilebiliyor.

dl {
  /* dt styles */
  
  dt {
    /* dl dt styles */
  }

  dd {
    /* dl dd styles */
  }
}

/* same as */
dt {
  /* dt styles */
}

dl dt {
  /* dl dt styles */
}

dl dd {
  /* dl dd styles */
}

İç İçe Yerleştirme Ekran Kaydı

İç İçe Yerleştirme Canlı Demosu

Yarışın kazananını belirlemek için gevşek iç içe yerleştirme seçiciyi değiştirme

İç içe yerleştirme, stil sayfasının ağırlığını azaltabilir, tekrarlanan seçicilerin ek yükünü azaltabilir ve bileşen stillerini merkezileştirebilir. İlk olarak, çeşitli yerlerde & kullanılması zorunluluğu getiren bir sınırlamayla yayınlanan söz dizimi, iç içe yerleştirme söz dizimini gevşeten bir güncelleme ile kaldırıldı.

İç içe yerleştirme hakkında daha fazla bilgi edinin.

Alt ızgara

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 71.
  • Safari: 16.

Source

CSS subgrid, alt düzenler arasında daha iyi hizalama ile daha karmaşık ızgaralar oluşturmanıza olanak tanır. Başka bir ızgaranın içindeki ızgaranın, ızgara satırları veya sütunları için değer olarak subgrid kullanarak dış ızgaranın satır ve sütunlarını kendi satır ve sütunları olarak benimsemesine olanak tanır.

Alt Izgara Ekran Kaydı

Alt Izgara Canlı Demosu

Üstbilgi, gövde ve altbilgiler, eşdüzeylerinin dinamik boyutlarına göre hizalanır.

Alt ızgara, kardeş öğeleri birbirlerinin dinamik içerikleriyle hizalamak için özellikle yararlıdır. Bu sayede metin yazarları, kullanıcı deneyimi yazarları ve çevirmenler, düzene "uygun" proje metinleri oluşturmaya çalışmak zorunda kalmaz. Alt ızgara ile düzen, içeriğe uyacak şekilde ayarlanabilir.

Alt ızgara hakkında daha fazla bilgi edinin.

Yazı biçimi

Web tipografisi 2023'te birkaç önemli güncelleme aldı. Özellikle güzel bir progresif geliştirme, text-wrap özelliğidir. Bu özellik, tarayıcıda ek komut dosyası oluşturma gerektirmeden oluşturulan tipografik düzen ayarlamasına olanak tanır. Garip satır uzunluklarına veda edin ve daha öngörülebilir bir tipografiye merhaba deyin!

Initial-letter

Browser Support

  • Chrome: 110.
  • Edge: 110.
  • Firefox: not supported.
  • Safari: 9.

Source

Yılın başında Chrome 110'da kullanıma sunulan initial-letter özelliği, ilk harflerin yerleştirilmesine yönelik stil belirleyen küçük ancak güçlü bir CSS özelliğidir. Harfleri düşürülmüş veya yükseltilmiş durumda konumlandırabilirsiniz. Bu özellik iki bağımsız değişken kabul eder: Birincisi, harfin ilgili paragrafa ne kadar derinlemesine yerleştirileceği, ikincisi ise harfin ne kadar yukarı kaldırılacağı. Hatta aşağıdaki demoda olduğu gibi ikisini birlikte de kullanabilirsiniz.

Baş harfi ekran görüntüsü

Başlangıç harfi demosunun ekran görüntüsü

Başlangıç Harfi Demosu

::first-letter sözde öğesi için initial-letter değerlerini değiştirerek kaymasını izleyin.

initial-letter hakkında daha fazla bilgi edinin.

text-wrap: balance and pretty

Geliştirici olarak, bir başlığın veya paragrafın son boyutunu, yazı tipi boyutunu, hatta dilini bilemezsiniz. Metin kaydırmanın etkili ve estetik bir şekilde işlenmesi için gereken tüm değişkenler tarayıcıda bulunur. Tarayıcı, yazı tipi boyutu, dil ve ayrılan alan gibi tüm faktörleri bildiği için gelişmiş ve yüksek kaliteli metin düzenini işlemek için mükemmel bir adaydır.

Bu noktada, biri balance, diğeri pretty olarak adlandırılan iki yeni metin kaydırma tekniği devreye giriyor. balance değeri, uyumlu bir metin bloğu oluşturmayı amaçlarken pretty değeri, tek başına kalan kelimeleri önlemeyi ve sağlıklı bir tireleme sağlamayı amaçlar. Bu görevlerin her ikisi de geleneksel olarak elle yapılırdı. Bu görevi tarayıcıya vermek ve çevrilen tüm dillerde çalışmasını sağlamak harika bir gelişme.

Metin kaydırma ekran video kaydı

Metin kaydırma canlı demosu

Aşağıdaki demoda kaydırma çubuğunu sürükleyerek balance ve pretty biçimlendirmelerinin başlık ve paragraf üzerindeki etkilerini karşılaştırabilirsiniz. Demoyu başka bir dile çevirmeyi deneyin.

text-wrap: balance hakkında daha fazla bilgi edinin.

Renk

2023, web platformu için renk yılı oldu. Yeni renk alanları ve dinamik renk temaları oluşturmanızı sağlayan işlevlerle, kullanıcılarınızın hak ettiği canlı ve zengin temaları oluşturmanızı engelleyecek hiçbir şey yok. Üstelik bu temaları özelleştirebilirsiniz.

HD Renk Uzayları (Renk Düzeyi 4)

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Source

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 15.

Source

Donanımdan yazılıma, CSS'den yanıp sönen ışıklara kadar; bilgisayarlarımızın renkleri, insan gözümüzün görebildiği kadar iyi şekilde temsil etmesi için çok fazla çalışma yapması gerekebilir. 2023'te yeni renkler, daha fazla renk, yeni renk alanları, renk işlevleri ve yeni özellikler sunuyoruz.

CSS ve renk artık: - Kullanıcının ekran donanımının geniş gamut HDR renklerini destekleyip desteklemediğini kontrol edebilir. - Kullanıcının tarayıcısının Oklch veya Display P3 gibi renk söz dizimini anlayıp anlamadığını kontrol edin. - Oklab, Oklch, HWB, Display P3, Rec.2020, XYZ ve daha fazlasında HDR renkleri belirtin. - HDR renkleriyle gradyanlar oluşturma, - Alternatif renk alanlarında gradyanları enterpolasyon yapma. - Renkleri color-mix() ile karıştırın. - Göreceli renk söz dizimiyle renk varyantları oluşturun.

Color 4 Screencast

Color 4 Demosu

Aşağıdaki demoda, kaydırma çubuğunu sürükleyerek `balance` ve `pretty` özelliklerinin başlık ve paragraf üzerindeki etkilerini karşılaştırabilirsiniz. Demoyu başka bir dile çevirmeyi deneyin.

Color 4 ve renk alanları hakkında daha fazla bilgi edinin.

color-mix işlevi

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 113.
  • Safari: 16.2.

Source

Renk karıştırma klasik bir görevdir ve 2023'te CSS de bunu yapabilir. Bir renge yalnızca beyaz veya siyah değil, şeffaflık da katabilir ve tüm bunları istediğiniz renk uzayında yapabilirsiniz. Hem temel hem de gelişmiş bir renk özelliğidir.

color-mix() ekran video kaydı

color-mix() Demosu

Demo, renk seçici, renk alanı ve karışımdaki her rengin ne kadar baskın olması gerektiğini seçmenize olanak tanır.

color-mix(), bir gradyendeki anlardan biri olarak düşünülebilir. Gradyen, maviden beyaza geçiş için gereken tüm adımları gösterirken color-mix() yalnızca bir adımı gösterir. Renk uzaylarını hesaba katmaya başladığınızda ve karıştırma renk uzayının sonuçlardan ne kadar farklı olabileceğini öğrendiğinizde işler daha karmaşık hale gelir.

color-mix() hakkında daha fazla bilgi edinin.

Göreceli renk söz dizimi

Göreli renk söz dizimi (RCS), renk varyantları oluşturmak için color-mix()'ı tamamlayıcı bir yöntemdir. color-mix() işlevinden biraz daha güçlüdür ancak renklerle çalışmak için farklı bir strateji de sunar. color-mix(), bir rengi açmak için beyaz rengi karıştırabilir. RCS ise parlaklık kanalına hassas erişim sağlar ve parlaklığı programatik olarak azaltmak veya artırmak için kanalda calc() kullanma olanağı sunar.

RCS Ekran Kaydı

RCS Canlı Demosu

Rengi değiştirin, sahneleri değiştirin. Her biri, temel renkten varyantlar oluşturmak için göreli renk söz dizimini kullanır.

RCS, bir renkte göreceli ve mutlak değişiklikler yapmanıza olanak tanır. Bağıl değişiklik, doygunluk veya parlaklığın mevcut değerini alıp calc() ile değiştirdiğiniz bir değişikliktir. Mutlak değişiklik, bir kanal değerini tamamen yeni bir değerle değiştirmenizdir (ör. opaklığı %50 olarak ayarlama). Bu söz dizimi, temalandırma, tam zamanında varyantlar ve daha fazlası için anlamlı araçlar sunar.

Göreli renk söz dizimi hakkında daha fazla bilgi edinin.

Duyarlı tasarım

Duyarlı tasarım 2023'te gelişti. Bu çığır açan yıl, duyarlı web deneyimleri oluşturma şeklimizi tamamen değiştiren yeni özelliklerin kullanıma sunulmasını sağladı ve bileşen tabanlı duyarlı tasarımın yeni bir modelini başlattı. Kapsayıcı sorguları ve :has(), üst öğelerinin boyutuna ve alt öğelerinin varlığına veya durumuna göre duyarlı ve mantıksal stil sahibi olan bileşenleri destekler. Bu sayede, sayfa düzeyindeki düzeni bileşen düzeyindeki düzenden ayırabilir ve bileşeninizin mantığını bir kez yazarak her yerde kullanabilirsiniz.

Boyut kapsayıcı sorguları

Browser Support

  • Chrome: 105.
  • Edge: 105.
  • Firefox: 110.
  • Safari: 16.

Source

Kapsayıcı sorguları, CSS stillerini uygulamak için görünüm alanının genel boyut bilgilerini kullanmak yerine sayfadaki bir üst öğenin sorgulanmasını destekler. Bu sayede bileşenler, birden fazla düzende ve görünümde dinamik olarak stillendirilebilir. Boyutla ilgili kapsayıcı sorguları, bu yıl Sevgililer Günü'nde (14 Şubat) tüm modern tarayıcılarda kararlı hale geldi.

Bu özelliği kullanmak için önce sorguladığınız öğede kapsama oluşturun, ardından stilleri uygulamak üzere boyut parametreleriyle birlikte @container kullanın. Bu işlem, medya sorgusuna benzer. Kapsayıcı sorgularıyla birlikte kapsayıcı sorgu boyutlarını da alırsınız. Aşağıdaki demoda, kart başlığını boyutlandırmak için kapsayıcı sorgusu boyutu cqi (satır içi kapsayıcının boyutunu temsil eder) kullanılır.

@container Screencast

@container Demo

Kapsayıcı sorgularını kullanma hakkında daha fazla bilgi edinin.

Stil kapsayıcı sorguları

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 151.
  • Safari: 18.

Stil sorguları, Chrome 111'de kısmi uygulamayla kullanıma sunuldu. Stil sorgularıyla şu anda @container style() kullanırken bir üst öğedeki özel özelliklerin değerini sorgulayabilirsiniz. Örneğin, özel bir özellik değerinin mevcut olup olmadığını veya belirli bir değere (ör. @container style(--rain: true)) ayarlanıp ayarlanmadığını sorgulayabilirsiniz.

Stil sorgusu ekran görüntüsü

Stil kapsayıcı sorguları hava durumu kartları için demo ekran görüntüsü

Stil sorgusu demosu

Rengi değiştirin, sahneleri değiştirin. Her biri, temel renkten varyantlar oluşturmak için göreli renk söz dizimini kullanır.

Bu, CSS'de sınıf adlarını kullanmaya benzese de stil sorgularının bazı avantajları vardır. İlk olarak, stil sorgularıyla CSS'deki değeri gerektiğinde sözde durumlar için güncelleyebilirsiniz. Ayrıca, uygulamanın gelecekteki sürümlerinde, uygulanan stili belirlemek için değer aralıklarını (ör. style(60 <= --weather <= 70)) ve özellik-değer çiftlerine (ör. style(font-style: italic)) göre stili sorgulayabileceksiniz.

Stil sorgularını kullanma hakkında daha fazla bilgi edinin.

:has() seçicisi

Browser Support

  • Chrome: 105.
  • Edge: 105.
  • Firefox: 121.
  • Safari: 15.4.

Source

Geliştiriciler, CSS'de yaklaşık 20 yıldır "üst seçici" istiyordu. Chrome 105'te kullanıma sunulan :has() seçiciyle bu artık mümkün. Örneğin, .card:has(img.hero) kullanıldığında alt öğe olarak banner resmi içeren .card öğeleri seçilir.

:has() Demo Ekran Görüntüsü

:has() demosu için referans ekran görüntüsü

:has() Canlı Demosu

CSS :has() demosu: Resimsiz/resimli kart

:has() bağımsız değişken olarak göreli seçici listesini kabul ettiğinden üst öğeden çok daha fazlasını seçebilirsiniz. Çeşitli CSS birleştiricileri kullanarak yalnızca DOM ağacında yukarı çıkmakla kalmaz, aynı zamanda yan seçimler de yapabilirsiniz. Örneğin, li:has(+ li:hover) tuşu, şu anda fareyle üzerine gelinen <li> öğesinden önceki <li> öğesini seçer.

:has() ekran video kaydı

:has() Demosu

CSS :has() demosu: Dock

CSS :has() seçicisi hakkında daha fazla bilgi edinin.

Medya sorgusunu güncelleme

Browser Support

  • Chrome: 113.
  • Edge: 113.
  • Firefox: 102.
  • Safari: 17.

Source

update medya sorgusu, kullanıcı arayüzünü cihazın yenileme hızına uyarlamanıza olanak tanır. Bu özellik, farklı cihazların özellikleriyle ilgili olarak fast, slow veya none değerini bildirebilir.

Tasarım yaptığınız cihazların çoğunda yüksek yenileme hızı bulunur. Masaüstü bilgisayarlar ve çoğu mobil cihaz buna dahildir. E-okuyucular ve düşük güçle çalışan ödeme sistemleri gibi cihazların yenileme hızı yavaş olabilir. Cihazın animasyonu veya sık güncellemeleri işleyemeyeceğini bilmek, pil kullanımından tasarruf etmenizi veya hatalı görünüm güncellemelerini önlemenizi sağlar.

Ekran Kaydı'nı güncelleme

Demoyu güncelleme

Bir radyo seçeneği belirleyerek güncelleme hızı değerini simüle edin ve bunun ördeği nasıl etkilediğini görün.

@media (update) hakkında daha fazla bilgi edinin.

Komut dosyası oluşturma medya sorgusu

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 113.
  • Safari: 17.

Source

JavaScript'in kullanılabilir olup olmadığını kontrol etmek için scripting medya sorgusu kullanılabilir. Bu, progresif geliştirme için çok kullanışlıdır. Bu medya sorgusundan önce, JavaScript'in kullanılabilir olup olmadığını tespit etmek için HTML'ye bir nojs sınıfı yerleştirilir ve bu sınıf JavaScript ile kaldırılırdı. CSS artık JavaScript'i tespit edip buna göre ayarlama yapabildiğinden bu komut dosyaları kaldırılabilir.

Chrome Geliştirici Araçları ile test için bir sayfada JavaScript'i nasıl etkinleştireceğinizi ve devre dışı bırakacağınızı buradan öğrenebilirsiniz.

Scripting Screencast

Komut dosyası oluşturma demosunu izleyin.

Bir web sitesindeki tema anahtarını ele alalım. JavaScript kullanılamadığından, komut dosyası oluşturma medya sorgusu, sistem tercihiyle çalışacak şekilde geçiş yapmaya yardımcı olabilir. Veya bir anahtar bileşenini ele alalım. JavaScript kullanılabiliyorsa anahtar, yalnızca açılıp kapatılmak yerine bir hareketle kaydırılabilir. Komut dosyası oluşturma kullanılabiliyorsa kullanıcı deneyimini yükseltmek için birçok fırsat vardır. Komut dosyası oluşturma devre dışı bırakılırsa anlamlı bir temel deneyim sunulur.

Senaryo hakkında daha fazla bilgi edinin.

Şeffaflığı azaltılmış medya sorgusu

Browser Support

  • Chrome: 118.
  • Edge: 118.
  • Firefox: behind a flag.
  • Safari: not supported.

Source

Opak olmayan arayüzler, çeşitli görme bozuklukları için baş ağrısına neden olabilir veya görsel olarak zorlayıcı olabilir. Bu nedenle Windows, macOS ve iOS'te kullanıcı arayüzündeki şeffaflığı azaltabilen veya kaldırabilen sistem tercihleri bulunur. prefers-reduced-transparency için bu medya sorgusu, diğer tercih medya sorgularıyla iyi uyum sağlar. Bu sorgular, kullanıcılar için ayarlama yaparken yaratıcı olmanıza olanak tanır.

Şeffaflığı Azaltılmış Ekran Video Kaydı

Azaltılmış Şeffaflık Demosu

Bazı durumlarda, içeriklerin diğer içeriklerin üzerine gelmediği alternatif bir düzen sağlayabilirsiniz. Diğer durumlarda ise bir rengin opaklığı, opak veya neredeyse opak olacak şekilde ayarlanabilir. Bu medya sorgusunun değerli olduğu zamanları merak ediyorsanız aşağıdaki blog yayınında, kullanıcı tercihlerine uyum sağlayan daha fazla ilham verici demo bulabilirsiniz.

@media (prefers-reduced-transparency) hakkında daha fazla bilgi edinin.

Etkileşim

Etkileşim, dijital deneyimlerin temelini oluşturur. Kullanıcıların tıkladıkları öğe ve sanal alandaki konumları hakkında geri bildirim almalarına yardımcı olur. Bu yıl, etkileşimlerin oluşturulmasını ve uygulanmasını kolaylaştıran, sorunsuz kullanıcı yolculukları ve daha iyi bir web deneyimi sağlayan birçok heyecan verici özellik kullanıma sunuldu.

Görünüm geçişleri

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: 144.
  • Safari: 18.

Source

Görünüm geçişleri, bir sayfanın kullanıcı deneyimini büyük ölçüde etkiler. View Transitions API ile tek sayfa uygulamanızın iki sayfa durumu arasında görsel geçişler oluşturabilirsiniz. Bu geçişler tam sayfa geçişleri veya sayfadaki daha küçük öğeler (ör. listeye yeni bir öğe ekleme ya da listeden öğe kaldırma) olabilir.

View Transitions API'nin temelinde document.startViewTranstion işlevi yer alır. DOM'u yeni duruma güncelleyen bir işlev iletin. API, sizin için her şeyi halleder. Bu efekt, önce ve sonra olmak üzere iki anlık görüntü alıp bunlar arasında geçiş yaparak çalışır. CSS kullanarak nelerin yakalanacağını kontrol edebilir ve isteğe bağlı olarak bu anlık görüntülerin nasıl animasyonlandırılacağını özelleştirebilirsiniz.

VT Screencast

VT Demosu

Görünüm Geçişleri demosunu görüntüleyin

Tek Sayfalı Uygulamalar için Görünüm Geçişleri API'si Chrome 111'de kullanıma sunuldu. Görünüm Geçişleri hakkında daha fazla bilgi edinin.

Doğrusal yumuşatma işlevi

Browser Support

  • Chrome: 113.
  • Edge: 113.
  • Firefox: 112.
  • Safari: 17.2.

Source

Bu işlevin adına aldanmayın. linear() işlevi (linearanahtar kelimesiyle karıştırılmamalıdır), biraz hassasiyet kaybı pahasına karmaşık yumuşak geçiş işlevlerini basit bir şekilde oluşturmanıza olanak tanır.

Chrome 113'te kullanıma sunulan linear() öncesinde CSS'de sıçrama veya yaylanma efektleri oluşturmak mümkün değildi. linear() sayesinde bu yumuşatma efektlerini bir dizi noktaya basitleştirip bu noktalar arasında doğrusal olarak enterpolasyon yaparak yaklaşık olarak elde etmek mümkün.

Üzerine birkaç nokta eklenmiş, sıçrama yumuşak geçiş eğrisinin grafiği
Mavi renkteki orijinal geri sekme eğrisi, yeşil renkte gösterilen bir dizi önemli nokta ile basitleştirilmiştir. linear() işlevi bu noktaları kullanır ve aralarında doğrusal olarak enterpolasyon yapar.

Linear-easing Screencast

Linear-easing Demo

CSS linear() demosu.

linear() hakkında daha fazla bilgi edinin. linear() eğrileri oluşturmak için doğrusal yumuşak geçiş oluşturma aracı'nı kullanın.

Kaydırma Sonu

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 109.
  • Safari: 26.2.

Source

Birçok arayüzde kaydırma etkileşimleri bulunur. Bazen arayüzün, geçerli kaydırma konumuyla ilgili bilgileri senkronize etmesi veya geçerli duruma göre verileri getirmesi gerekir. scrollend etkinliğinden önce, kullanıcının parmağı ekrandayken tetiklenebilen yanlış bir zaman aşımı yöntemi kullanmanız gerekiyordu. scrollend etkinliğiyle birlikte, kullanıcının hareketi tamamlayıp tamamlamadığını anlayan, mükemmel zamanlanmış bir scrollend etkinliğine sahip olursunuz.

Scrollend Screencast

Scrollend Demosu

JavaScript, kaydırma sırasında parmağın ekrandaki varlığını izleyemediği için bu, tarayıcının sahip olması gereken önemli bir özellikti. Bu bilgi, basitçe kullanılamaz. Artık yanlış kaydırma sonu deneme kodu parçaları silinebilir ve tarayıcıya ait yüksek hassasiyetli bir etkinlikle değiştirilebilir.

scrollend hakkında daha fazla bilgi edinin.

Kaydırmaya dayalı animasyonlar

Browser Support

  • Chrome: 115.
  • Edge: 115.
  • Firefox: behind a flag.
  • Safari: 26.

Source

Kaydırmaya dayalı animasyonlar, Chrome 115'ten itibaren kullanılabilen heyecan verici bir özelliktir. Bu özellikler, mevcut bir CSS animasyonunu veya Web Animasyonları API'si ile oluşturulmuş bir animasyonu alıp kaydırılabilir alanın kaydırma uzaklığıyla eşleştirmenize olanak tanır. Yukarı ve aşağı ya da yatay kaydırma çubuğunda sola ve sağa kaydırdığınızda, bağlı animasyon doğrudan yanıt olarak ileri ve geri sarılır.

ScrollTimeline ile, aşağıdaki demoda gösterildiği gibi kaydırılabilir alanın genel ilerleme durumunu takip edebilirsiniz. Sayfanın sonuna doğru kaydırdıkça metin karakter karakter görünür.

SDA Ekran Kaydı

SDA Demosu

CSS'de kaydırmaya dayalı animasyon demosu: kaydırma zaman çizelgesi

ViewTimeline ile bir öğeyi kaydırma bağlantı noktasını geçerken izleyebilirsiniz. Bu işlev, IntersectionObserver'ın bir öğeyi izlemesine benzer şekilde çalışır. Aşağıdaki demoda, her resim kaydırma alanına girdiği andan itibaren ortaya çıkmaya başlar ve merkeze gelene kadar görünür olmaya devam eder.

SDA Demo Ekran Kaydı

SDA Canlı Demosu

CSS'de kaydırmaya dayalı animasyonlar demosu: görünüm zaman çizelgesi

Kaydırmaya dayalı animasyonlar, CSS animasyonları ve Web Animations API ile çalıştığından bu API'lerin tüm avantajlarından yararlanabilirsiniz. Bu animasyonların ana iş parçacığı dışında çalıştırılması da bu kapsamdadır. Artık yalnızca birkaç satır ek kodla ana iş parçacığının dışında çalışan, kaydırma tabanlı ve akıcı animasyonlar oluşturabilirsiniz.

Kaydırmaya dayalı animasyonlar hakkında daha fazla bilgi edinmek için tüm ayrıntıların yer aldığı bu makaleyi inceleyin veya scroll-driven-animations.style adresini ziyaret edin. Bu adreste birçok demo yer almaktadır.

Ertelenen zaman çizelgesi eki

Browser Support

  • Chrome: 116.
  • Edge: 116.
  • Firefox: not supported.
  • Safari: 26.

Source

CSS aracılığıyla kaydırmaya dayalı bir animasyon uygularken, kontrol eden kaydırıcıyı bulmak için kullanılan arama mekanizması her zaman DOM ağacında yukarı doğru ilerler. Bu nedenle, yalnızca kaydırma üst öğeleriyle sınırlıdır. Ancak çoğu zaman, animasyon uygulanması gereken öğe, kaydırıcının alt öğesi değil, tamamen farklı bir alt ağaçta bulunan bir öğedir.

Animasyonlu öğenin, üst öğe olmayan bir öğenin adlandırılmış kaydırma zaman çizelgesini bulmasına izin vermek için paylaşılan bir üst öğede timeline-scope özelliğini kullanın. Bu, tanımlanan scroll-timeline veya view-timeline'nin bu ada eklenmesine olanak tanıyarak daha geniş bir kapsam sağlar. Bu ayar etkinleştirildiğinde, paylaşılan üst öğenin tüm alt öğeleri bu adla zaman çizelgesini kullanabilir.

Paylaşılan bir üst öğede kullanılan zaman çizelgesi kapsamlı bir DOM alt ağacının görselleştirilmesi
Paylaşılan üst öğede timeline-scope tanımlandığında, kaydırılabilir alanda tanımlanan scroll-timeline, animation-timeline olarak kullanan öğe tarafından bulunabilir.

Demo Ekran Kaydı

Canlı Demo

CSS kaydırmaya dayalı animasyon demosu: ertelenmiş zaman çizelgesi ekleme

timeline-scope hakkında daha fazla bilgi edinin.

Ayrı özellik animasyonları

2023'teki bir diğer yeni özellik ise display: none'ya ve display: none'dan animasyon oluşturma gibi ayrı animasyonlar oluşturabilme özelliğidir. Chrome 116'dan itibaren, anahtar kare kurallarında display ve content-visibility kullanabilirsiniz. Ayrıca, herhangi bir ayrı özelliği% 0 noktasında değil% 50 noktasında da geçirebilirsiniz. Bu, allow-discrete anahtar kelimesinin kullanıldığı transition-behavior özelliğiyle veya transition özelliğinde kısaltma olarak elde edilir.

Ayrık Anim. Ekran video kaydı

Ayrık Anim. Demo

Ayrı animasyonlara geçiş hakkında daha fazla bilgi edinin.

@starting-style

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: 129.
  • Safari: 17.5.

Source

@starting-style CSS kuralı, display: none öğesine ve bu öğeden animasyon oluşturmak için yeni web özelliklerini temel alır. Bu kural, bir öğeye tarayıcının öğe sayfada açılmadan önce arayabileceği bir "açılmadan önceki" stil verme olanağı sunar. Bu, giriş animasyonları ve popover veya iletişim kutusu gibi öğelerde animasyon oluşturmak için çok kullanışlıdır. Ayrıca, bir öğe oluşturduğunuz ve bu öğeye animasyon oluşturma özelliği vermek istediğiniz her durumda da yararlı olabilir. Aşağıdaki örneği inceleyin. Bu örnekte, bir popover özelliği (sonraki bölüme bakın) görünüm alanının dışından görünüm alanına ve en üst katmana sorunsuz bir şekilde animasyonla getiriliyor.

@starting-style Screencast

@starting-style Demosu

@starting-style ve diğer giriş animasyonları hakkında daha fazla bilgi edinin.

Yer paylaşımı

Browser Support

  • Chrome: 117.
  • Edge: 117.
  • Firefox: not supported.
  • Safari: not supported.

Source

Yeni CSS overlay özelliği, geçişinize eklenerek popover ve dialog gibi üst katman stillerine sahip öğelerin üst katmandan sorunsuz bir şekilde çıkmasını sağlayabilir. Yerleşimi geçiş yapmazsanız öğeniz hemen kırpılmış, dönüştürülmüş ve örtülmüş duruma geri döner ve geçişin gerçekleştiğini görmezsiniz. Benzer şekilde, overlay özelliği, üst katman öğesine eklendiğinde ::backdrop öğesinin sorunsuz bir şekilde çıkmasını sağlar.

Ekran Kaydı Yer Paylaşımı

Yer Paylaşımlı Canlı Demo

Yer paylaşımı ve diğer çıkış animasyonları hakkında daha fazla bilgi edinin.

Bileşenler

2023, stil ve HTML bileşenlerinin kesişimi için büyük bir yıl oldu. popover kullanıma sunuldu ve bağlantı konumlandırma ile açılır listeleri şekillendirmenin geleceği konusunda çok çalışma yapıldı. Bu bileşenler, ek kitaplıklara güvenmeye veya her seferinde kendi durum yönetimi sistemlerinizi sıfırdan oluşturmaya gerek kalmadan yaygın kullanıcı arayüzü kalıpları oluşturmayı kolaylaştırır.

Popover

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 125.
  • Safari: 17.

Source

Popover API, sayfanın geri kalanının üzerinde yer alan öğeler oluşturmanıza yardımcı olur. Menüler, seçim ve ipuçları bu kapsamda yer alabilir. Açılan öğeye popover özelliğini ve id ekleyip id özelliğini popovertarget="my-popover" kullanarak çağırma düğmesine bağlayarak basit bir popover oluşturabilirsiniz. Popover API şunları destekler:

  • En üst katmana yükseltme Pop-up'lar, sayfanın geri kalanının üzerinde ayrı bir katmanda görüneceğinden Z-endeksiyle uğraşmanız gerekmez.
  • Hafifçe kapatma işlevi Pop-over alanının dışını tıkladığınızda pop-over kapatılır ve odak geri döner.
  • Varsayılan odak yönetimi Pop-over'ı açtığınızda bir sonraki sekme durağı pop-over'ın içinde olur.
  • Erişilebilir klavye bağlamaları esc tuşuna basmak veya iki kez geçiş yapmak, popover'ı kapatıp odağı geri döndürür.
  • Erişilebilir bileşen bağlamaları. Bir popover öğesini popover tetikleyicisine anlamsal olarak bağlama.

Popover Ekran Kaydı

Popover Canlı Demosu

Seçili alanda yatay çizgiler

Bu yıl Chrome ve Safari'de kullanıma sunulan HTML'deki bir diğer küçük değişiklik ise içeriğinizi görsel olarak ayırmaya yardımcı olmak için <select> öğelerine yatay çizgi öğeleri (<hr> etiketleri) ekleme olanağıdır. Daha önce, bir seçeneğe <hr> etiketi yerleştirmek, seçeneğin oluşturulmamasına neden oluyordu. Ancak bu yıl hem Safari hem de Chrome bu özelliği destekleyerek <select> öğelerindeki içeriklerin daha iyi ayrılmasını sağlıyor.

Ekran görüntüsü seçin

Chrome&#39;da açık ve koyu temayla seçilen hr öğesinin ekran görüntüsü

Canlı Demoyu seçin.

using hr in select kullanma hakkında daha fazla bilgi edinin.

:user-valid ve invalid sözde sınıfları

Browser Support

  • Chrome: 119.
  • Edge: 119.
  • Firefox: 88.
  • Safari: 16.5.

Source

Bu yıl tüm tarayıcılarda kararlı olan :user-valid ve :user-invalid, :valid ve :invalid sözde sınıflarına benzer şekilde davranır ancak yalnızca kullanıcı girişle önemli ölçüde etkileşimde bulunduktan sonra bir form kontrolüyle eşleşir. Gerekli olan ve boş olan bir form kontrolü, kullanıcı sayfayla etkileşime başlamamış olsa bile :invalid ile eşleşir. Aynı kontrol, kullanıcı girişi değiştirip geçersiz durumda bırakana kadar :user-invalid ile eşleşmez.

Bu yeni seçicilerle, kullanıcının değiştirdiği girişi takip etmek için artık durum bilgisi olan kod yazmaya gerek kalmıyor.

:user-* Ekran Kaydı

:user-* Live Demo

user-* form doğrulama sözde öğelerini kullanma hakkında daha fazla bilgi edinin.

Özel akordeon

Browser Support

  • Chrome: 120.
  • Edge: 120.
  • Firefox: 130.
  • Safari: 17.2.

Web'deki yaygın bir kullanıcı arayüzü kalıbı, akordeon bileşenidir. Bu kalıbı uygulamak için birkaç <details> öğesini birleştirirsiniz. Genellikle bu öğeleri görsel olarak gruplandırarak birlikte ait olduklarını belirtirsiniz.

Chrome 120'de <details> öğelerinde name özelliği için destek sunuluyor. Bu özellik kullanıldığında, aynı name değerine sahip birden fazla <details> öğesi semantik bir grup oluşturur. Gruptaki öğelerden en fazla biri aynı anda açık olabilir: Gruptaki <details> öğelerinden birini açtığınızda daha önce açık olan öğe otomatik olarak kapanır. Bu tür akordiyonlara özel akordiyon adı verilir.

Özel akordeon demosu

Özel bir akordeonun parçası olan <details> öğelerinin kardeş öğeler olması gerekmez. Bunlar dokümana dağılmış olabilir.

CSS, özellikle 2023'te olmak üzere son birkaç yılda büyük bir yenilenme yaşadı. CSS'yi yeni kullanmaya başladıysanız veya temel bilgilerle ilgili hatırlatma yapmak istiyorsanız web.dev'de sunulan diğer ücretsiz kursların yanı sıra ücretsiz Learn CSS kursumuza göz atın.

Mutlu bir yıl sonu sezonu geçirmenizi dileriz. Bu harika yeni CSS ve kullanıcı arayüzü özelliklerinden bazılarını yakında çalışmalarınıza dahil etme fırsatı bulacağınızı umuyoruz.

⇾ Chrome UI DevRel Ekibi,