location:sticky Chrome'da geri döndü

Dört yıl önce Eric Bidelman, position: sticky'nin o zamanlar Chrome'u (ve Safari dahil diğer birçok tarayıcıyı) destekleyen motor olan WebKit'e eklenmesiyle ilgili oldukça etkileyici bir blog yayını hazırladı. Bir yıl sonra, web geliştiricilerinin büyük hayal kırıklığına uğramasına neden olarak position:sticky'ı Chrome'dan kaldırdık. Bunun nedeni, "mevcut uygulamanın mevcut kaydırma ve oluşturma sistemiyle iyi bir şekilde entegre olacak şekilde tasarlanmamış olması"ydı.

"Kaydırma ve oluşturma bölümünü düzene soktuktan sonra position: sticky özelliğini geri alıp motorun geri kalanıyla iyi şekilde entegre olacak şekilde uygulamamız gerekir" şeklindeki hata mesajında da belirtildiği gibi, bu özelliği Chrome'a geri getirmek için her zaman istekliydik. Uygulamayı izleyen meta hatası üzerinde 2013'ten beri çalışılıyor.

Güzel bir haberimiz var. Chrome 56'dan itibaren (Aralık 2016 itibarıyla beta, Ocak 2017 itibarıyla kararlı) position: sticky Chrome'a geri döndü.

position:sticky nedir?

Bu noktaya gelmek biraz zaman aldı. Peki neden heyecanlıyım?

position:sticky, bir öğeyi görüntü alanına sabitlemenize (ör.ekranın üst kısmına sabitlemenize) olanak tanıyan bir CSS konumlandırma özelliğidir ancak yalnızca üst öğesi görüntü alanında görünür ve eşik değerinin içinde olduğunda geçerlidir. Görüntü alanına sabitlenmediğinde öğe position: relative gibi davranır. Bu özellik, platforma eklenen çok güzel ve basit bir özelliktir. Bir öğeyi görüntü alanının üst kısmına kilitlemek için onscroll etkinlik işleyicisinde JavaScript kullanma ihtiyacını ortadan kaldırır.

Bu, blogumda nasıl göründüğünü gösteriyor. Bu sayede, oldukça uzun ve zahmetli makalelerimi okurken mevcut bölümün başlığını ekranın üst kısmında tutabilirim :\

Bu özelliği uygulamak için, sabitlemek istediğiniz öğede position özelliğinin sticky değerine sahip olması gerektiğini belirtin. Ayrıca, yapıştırılması gereken yerin ofsetini de ekleyebilirsiniz.

    h3 {
      /* Element will be 'fixed' when it ... */
      position: sticky;
      /* ... is 10px from the top of the viewport */
      top: 10px;
    }

Önceki örnekte, <h3> öğesi görüntü alanının üst kısmından 10 piksel uzaklıkta sabitlenir. Doğrudan görüntü alanının üst kısmına sabitlemek için top özelliğini top: 0px olarak ayarlarsınız.

Bu özellik için destek oldukça güçlüdür. Bu özellik Chrome (yay), Firefox ve Safari'de kullanılabilir. position:sticky hakkında daha fazla bilgiyi aşağıda bulabilirsiniz: