Üst katmanla tanışın: Z-endeksi:10000 için bir çözüm

Üst katman, tarayıcı görüntü alanında ilgili document'nin üzerinde yer alır ve her document'nin ilişkili bir üst katmanı vardır. Bu, üst katmana yükseltilen öğelerin z-index veya DOM hiyerarşisi hakkında endişelenmesi gerekmediği anlamına gelir. Ayrıca, oynayabilecekleri şık bir ::backdrop sözde öğesi de vardır. dialog desteği sunulmadan önce kullanılan üst katmanın mükemmel bir örneği olan Tam Ekran, Tam Ekran API spesifikasyonunda daha ayrıntılı olarak ele alınmıştır.

Üst katman, içeriğin document'ün geri kalanının üzerinde oluşturulması sorununu çözmeye yardımcı olur.

Unutulmaması gereken önemli noktalar: - Üst katman, document akışının dışındadır. - z-index, üst katmanda hiçbir etki oluşturmaz. - Üst katmandaki her öğenin stil uygulanabilir bir ::backdrop sözde öğesi vardır. - Her öğe ve ::backdrop yeni bir yığın bağlamı oluşturur. - Üst katmandaki öğeler, sette göründükleri sırayla yığılır. En son eklenen en üstte görünür. Bir öğeyi öne çıkarmak istiyorsanız öğeyi kaldırıp tekrar ekleyin.

Üst katmanı şimdiye kadar nasıl taklit ettik? Geliştiricilerin body öğesinin sonuna boş bir kapsayıcı öğesi eklediğini görmek yaygın bir durumdur. Bu da "sahte" bir üst katman olarak kullanılır. Buradaki amaç, bu kapsayıcının yığıntaki diğer her şeyin üzerine yerleştirilmesidir. Bir öğeyi diğerlerinin üzerinde tanıtmak istediğinizde bu kapsayıcıya eklersiniz. Bu durumu SweetAlert, reactjs-popup, Magnific Popup gibi popüler paketlerde görebiliriz.

.

<dialog> ve "Pop-up" gibi yeni yerleşik bileşenler ve API'ler sayesinde bu geçici çözümlere başvurmanız gerekmez. İçerikleri üst katmana taşıyabilirsiniz.

Kullanıcı arayüzü çerçeveleri, tanıtılan öğeleri bileşen karşılıklarıyla birlikte konumlandırmamıza olanak tanır. Ancak oluşturma söz konusu olduğunda genellikle DOM'da ayrılırlar.

Üst katmanı kullanarak, yükseltilen öğeler kaynak kodunuza (örneğin, <dialog>) yerleştirdiğiniz yerdedir. Öğenin DOM'da kaç katman aşağıda olduğu önemli değildir. Öğe, üst katmana yükseltilir ve bileşen HTML'nizle birlikte bulunduğu yerde, olmasını beklediğiniz yerde inceleyebilirsiniz. Bu sayede, DOM'da hem tetikleyici öğeyi hem de tanıtılan öğeyi aynı anda inceleyebilirsiniz. Özellikle tetikleyici öğeniz özellik güncellemeleri yapıyorsa kullanışlıdır. Öğeler birlikte bulunduğundan bu, erişilebilirlik açısından da ek bir avantaj sağlar.

kalemine bakın.

Üst katman ile yüksek z-index arasındaki farkı göstermek için bu demoyu inceleyin.

belgesine bakın.

Bu demoda bir SweetAlert pop-up'ı ve üst katman <dialog> açabilirsiniz. <dialog>'ü açın ve ardından SweetAlert pop-up'ını açmayı deneyin. Bu öğenin, üst katman öğemizin altında göründüğünü göreceksiniz. SweetAlert pop-up'ımızın kökünde, position: fixed ile 10000 değerinde bir z-index kullanılıyor.

.swal-overlay {
  z-index: 10000;
  position: fixed;
}

Diğer tüm içeriğin üzerinde görünmesi için <dialog> öğesine herhangi bir stil uygulamanız gerekmez.

Geliştirici Araçları

Şimdi DevTools desteğine geçelim. Chrome Geliştirici Araçları, üst katmanı inceleyebilmeniz için üst katman öğeleri için destek ekliyor. Bu sayede, üst katmanda nelerin yer aldığını veya nelerin üst üste yığıldığını görebilir ve hata ayıklama işlemini kolaylaştırabilirsiniz.

DevTools üst katman desteğinin gösterildiği GIF

Alina Varkki'nin bu araçları kullanmayla ilgili ayrıntılı bir makalesi var. Bu özellikler şu anda Chrome Canary sürüm 105'te önizleme özelliği olarak sunulmaktadır.

Hepsi bu kadar!

Üst katmana kısa bir giriş. Aşağıdaki gibi öğelere "Hoşçakal" demenizi sağlar:

.popup-container {
  z-index: 10000;
}

Üst katmana neleri gönderirsiniz? dialog özelliğini denediniz mi? OpenUI Popover API'yi denediniz mi? Bunu bize bildirin!