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 bir zamanlar web platformunda imkansız olduğunu düşündüğü özellikleri mümkün kılan birçok yeni gelişmeye. 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şlevi 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ştiricilerin ve web topluluğunun sıkı çalışmasını kutlayarak ve takdir ederek bitirmek istiyoruz.

Mimari temeller

Temel CSS dilinde ve özelliklerinde yapılan güncellemelerle başlayalım. Bu özellikler, stilleri oluşturma ve düzenleme şeklinizin temelini oluşturur ve geliştiricilere büyük bir güç verir.

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 hâle getirdi. Bu işlevler, animasyon ve düzen amaçları için çok kullanışlıdır. Örneğin, artık öğeleri seçilen bir merkezin etrafındaki daireye yerleştirmek çok daha kolay.

Trigonometrik fonksiyonlar demosu

CSS'deki trigonometrik fonksiyonlar hakkında daha fazla bilgi edinin.

Karmaşık n'inci-* seçim

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 mikro söz dizimini kullanarak hangi öğeleri seçeceğiniz üzerinde ayrıntılı 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()'ye 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: behind a flag.
  • 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 spesifik seçiciler yazmak veya bunları DOM yapısıyla sıkı bir şekilde bağlamak zorunda kalmadan hangi öğeleri seçeceğiniz konusunda çok spesifik 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çici, ö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ı yığını ve dağınık bir yazma deneyimine yol açar. Artık seçiciler, ilgili stil kuralları gruplandırılmış şekilde devam edebilir.

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 Video 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, söz diziminin çeşitli yerlerinde & kullanılması zorunluluğu getirilmişti. Ancak iç içe yerleştirme söz diziminin gevşetildiği bir güncelleme ile bu sınırlama 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ıştaki ızgaranın satır ve sütunlarını kendi satır ve sütunları olarak benimsemesine olanak tanır.

Subgrid Screencast

Subgrid 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 kılavuz hakkında daha fazla bilgi edinin.

Yazı biçimi

Web tipi, 2023'te birkaç önemli güncelleme aldı. Özellikle güzel bir aşamalı geliştirme, text-wrap özelliğidir. Bu özellik, tarayıcıda oluşturulan ve ek komut dosyası gerektirmeyen tipografik düzen ayarlamasına olanak tanır. Garip satır uzunluklarına veda edin ve daha öngörülebilir tipografiyle tanışın.

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 alçak veya yüksek konumda yerleştirebilirsiniz. Özellik iki bağımsız değişken kabul eder: Birincisi harfin ilgili paragrafa ne kadar derinlikte 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 girer. balance değeri, uyumlu bir metin bloğu oluşturmayı amaçlarken pretty değeri, yetim kelimeleri önlemeyi ve sağlıklı tireleme sağlamayı amaçlar. Bu görevlerin her ikisi de geleneksel olarak elle yapılıyordu. Bu işi tarayıcıya vermek ve çevrilen tüm dillerde çalışmasını sağlamak harika bir özellik.

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 efektlerinin bir 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 renklerin yılı oldu. Yeni renk alanları ve dinamik renk temaları oluşturmanızı sağlayan işlevler sayesinde, kullanıcılarınızın hak ettiği canlı ve zengin temaları oluşturabilir, ayrıca 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 etmeye çalışması çok fazla iş gerektirebilir. 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ş renk gamı 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ı enterpolasyonla oluşturma. - 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ışımda hangi rengin ne kadar baskın olması gerektiğini seçmenize olanak tanır.

color-mix() öğesini, bir gradyendeki belirli bir an olarak düşünebilirsiniz. Mavi renkten beyaz renge geçiş için gereken tüm adımları gösteren bir gradyanın aksine, color-mix() yalnızca bir adımı gösterir. Renk uzaylarını dikkate almaya başladığınızda ve karıştırma renk uzayının sonuçlardan ne kadar farklı olabileceğini öğrendiğinizde işler daha da karmaşıklaşır.

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

Göreceli renk söz dizimi

Göreceli renk söz dizimi (RCS), renk varyantları oluşturmak için color-mix() ile birlikte kullanılabilen bir yöntemdir. color-mix() işlevinden biraz daha güçlü olsa da renklerle çalışmak için farklı bir strateji 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. Göreceli 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.

Bağıl 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şenlerinizi her yerde kullanmak için mantığı bir kez yazabilirsiniz.

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üntü 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 ayarlayın. Ardından, stilleri uygulamak için boyut parametreleriyle birlikte @container kullanın (medya sorgusuna benzer şekilde). Container sorgularıyla birlikte container 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 Demosu

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

Stil kapsayıcı sorguları

Browser Support

  • Chrome: 111.
  • Edge: 111.
  • Firefox: not supported.
  • Safari: 18.

Stil sorguları, Chrome 111'de kısmi olarak 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 @container style(--rain: true) gibi belirli bir değere ayarlanıp ayarlanmadığını sorgulayın.

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 stil oluşturmak için 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, yaklaşık 20 yıldır CSS'de "ü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) öğesini kullanmak, alt öğe olarak ana resim içeren .card öğelerini seçer.

: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 komut dosyası oluşturma medya sorgusu kullanılabilir. Bu, aşamalı geliştirme için çok iyi bir yöntemdir. Bu medya sorgusundan önce, JavaScript'in kullanılabilir olup olmadığını algılamaya yönelik strateji, HTML'ye bir nojs sınıfı yerleştirmek ve bunu JavaScript ile kaldırmaktı. CSS artık JavaScript'i algılayıp 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.

Komut dosyası oluşturma ekran video kaydı

Komut Dosyası Oluşturma Demosu

Bir web sitesinde tema değiştirme işlemini ele alalım. JavaScript olmadığı için komut dosyası medya sorgusu, sistem tercihine göre çalışacak şekilde tema değiştirme işlemine yardımcı olabilir. JavaScript kullanılabiliyorsa açma/kapatma düğmesi yerine kaydırma hareketiyle kullanılabilen bir anahtar bileşeni de kullanabilirsiniz. Komut dosyası oluşturma özelliği etkinse kullanıcı deneyimini iyileştirmek için birçok fırsat elde edebilirsiniz. Komut dosyası oluşturma özelliği devre dışıysa da anlamlı bir temel deneyim sunabilirsiniz.

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 baş ağrısına neden olabilir veya çeşitli görme bozuklukları için görsel bir mücadele 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, kullanıcıları da hesaba katarak yaratıcı olmanıza olanak tanıyan diğer tercih medya sorgularıyla iyi uyum sağlar.

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

Azaltılmış Şeffaflık Demosu

Bazı durumlarda, diğer içeriklerin üzerine yerleştirilmemiş içeriklerin bulunduğu alternatif bir düzen sağlayabilirsiniz. Diğer durumlarda, bir rengin opaklığı, opak veya neredeyse opak olacak şekilde ayarlanabilir. Aşağıdaki blog yayınında, kullanıcı tercihlerine uyum sağlayan daha fazla ilham verici demo yer alıyor. Bu medya sorgusunun ne zaman değerli olduğunu merak ediyorsanız bu demoları inceleyebilirsiniz.

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

Etkileşim

Etkileşim, dijital deneyimlerin temel taşıdır. 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 Technology Preview: supported.
  • Safari: 18.

Source

Görünüm geçişleri, bir sayfanın kullanıcı deneyimi üzerinde büyük bir etkiye sahiptir. View Transitions API ile tek sayfalık 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 Sayfa 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ı sizi yanıltmasın. linear() işlevi (linearanahtar kelimesiyle karıştırılmamalıdır), biraz hassasiyet kaybı pahasına karmaşık yumuşatma işlevlerini basit bir şekilde oluşturmanıza olanak tanır.

Chrome 113'te kullanıma sunulan linear() öncesinde CSS'de sıçrama veya yay efektleri oluşturmak mümkün değildi. linear() sayesinde, bu yumuşatma işlevlerini bir dizi noktaya basitleştirerek ve ardından bu noktalar arasında doğrusal olarak ara değer hesaplayarak yaklaşık olarak elde etmek mümkündür.

Üzerine birkaç nokta eklenmiş, sıçrama kolaylaştırma eğrisinin grafiği
Mavi renkteki orijinal sıçrama 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şatma oluşturucu'yu kullanın.

Kaydırma Sonu

Browser Support

  • Chrome: 114.
  • Edge: 114.
  • Firefox: 109.
  • Safari: not supported.

Source

Birçok arayüzde kaydırma etkileşimleri bulunur ve bazen arayüzün, mevcut kaydırma konumuyla ilgili bilgileri senkronize etmesi veya mevcut duruma göre veri 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, 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 ekranda parmak olup olmadığını izleyemediğinden bu, tarayıcının sahip olması gereken önemli bir özelliktir. Bu bilgi, basitçe kullanılamaz. Kaydırmanın sonunu belirlemeye yönelik hatalı kod parçaları artık silinebilir ve tarayıcıya ait yüksek hassasiyetli bir etkinlik ile 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ıcını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.

Aşağıdaki demoda gösterildiği gibi, ScrollTimeline ile kaydırıcının genel ilerleme durumunu takip edebilirsiniz. Sayfanın sonuna doğru kaydırdığınızda metin karakter karakter gösterilir.

SDA ekran video kaydı

SDA Demosu

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

ViewTimeline ile bir öğeyi kaydırma alanı boyunca hareket ederken 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 kaydırmaya dayalı animasyon 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ığından kaydırma tabanlı, akıcı animasyonlar elde edebilirsiniz.

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ı 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 ve yalnızca kaydırma üst öğeleriyle sınırlı kalır. Ancak çok sık olarak, animasyon uygulanması gereken öğe kaydırıcının alt öğesi değil, tamamen farklı bir alt ağaçta bulunan bir öğe olur.

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 öğesinin 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 bildirildiğinde, kaydırma çubuğunda bildirilen scroll-timeline, bunu 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ı canlandırma özelliğidir. Chrome 116'dan itibaren, anahtar kare kurallarında display ve content-visibility kullanabilirsiniz. Ayrıca, herhangi bir ayrı mülkü% 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 konumuna ve bu konumdan animasyon oluşturmak için yeni web özelliklerini temel alır. Bu kural, tarayıcının öğe sayfada açılmadan önce arayabileceği bir "açılmadan önce" stili vermenin bir yolunu sağlar. Bu, giriş animasyonları ve popover veya iletişim kutusu gibi öğeleri animasyonla gösterme açısından çok yararlıdır. Ayrıca, bir öğe oluşturduğunuzda ve bu öğeye animasyon eklemek istediğinizde de kullanışlı olabilir. Görüntü alanının dışından görünüm alanına ve üst katmana sorunsuz bir şekilde popover özelliğini (sonraki bölüme bakın) animasyonla getiren aşağıdaki örneği inceleyin.

@starting-style Ekran Kaydı

@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 eklenebilir. Bu sayede, popover ve dialog gibi üst katman stillerine sahip öğelerin üst katmandan sorunsuz bir şekilde animasyonla çıkması sağlanır. 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, üst katman öğesine eklendiğinde ::backdrop öğesinin sorunsuz bir şekilde animasyonla kaldırılmasını sağlar.

Ekran video kaydını yer paylaşımı olarak ekleme

Yer Paylaşımlı Reklam Canlı Demosu

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

Bileşenler

2023, stil ve HTML bileşenlerinin kesişimi açısından önemli bir yıl oldu. popover kullanıma sunuldu ve bağlantı konumlandırma ile açılır listelerin stilinin geleceği konusunda çok fazla ç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 ortak 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. Popover'ı açtığınızda bir sonraki sekme durağı popover'ın içinde olur.
  • Erişilebilir klavye bağlamaları esc tuşuna basıldığında veya iki kez geçiş yapıldığında popover kapatılır ve odak geri döner.
  • Erişilebilir bileşen bağlamaları. Bir popover öğesini popover tetikleyicisine anlamsal olarak bağlama.

Popover Ekran Video 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.

Seçme işleminde hr 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 bir form kontrolüyle yalnızca kullanıcı girişiyle önemli ölçüde etkileşim kurduktan sonra eşleşir. Zorunlu olan ve boş bırakılan 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 bir durumda bırakana kadar :user-invalid ile eşleşmez.

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

:user-* Ekran Kaydı

:user-* Canlı 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 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 anlamsal bir grup oluşturur. Grupta aynı anda en fazla bir öğe açık olabilir: Gruptaki <details> öğelerden 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 değişim geçirdi. 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 CSS'yi Öğrenin 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,