scroll-snap (CSS)

scroll-snap, bir sayfanın içeriğinin belirli aralıklarla belirli hızlarda veya adımlarda kaydırılmasına olanak tanır. Özellikle mobil cihazlarda kullanıcı deneyimini artırmak için son derece yararlıdır. Kullanımı oldukça basittir.

scroll-snap-type

İlk adım, belirli bir kaydırma yöntemi belirlemektir. Bu özellik, scroll-snap özelliğinin belirli bir sayfaya veya elementin nasıl hareket edeceğini belirler. scroll-snap-type, herhangi bir HTML elementine uygulanabilir ve aşağıdaki değerlerden birini alabilir:

  • mandatory: Her zaman kaydırmayı kesin olarak tanımlar.
  • proximity: Kaydırmayı, elementin ekranın bir kenarına ne kadar yakın olduğuna bağlı olarak kontrol eder.
  • none: scroll-snap’i devre dışı bırakır.

Aşağıdaki örnekte, scroll-snap-type özelliği, “mandatory” değeriyle belirlenmiştir:

.container {
  scroll-snap-type: mandatory;
}

scroll-snap-alignment

İkinci adım, öğelerin nasıl hizalanacağını belirlemektir. scroll-snap-alignment, öğelerin hizalanması için beş farklı değere sahiptir:

  • start: Elementler sol veya üst kenara hizalanır.
  • end: Elementler sağ veya alt kenara hizalanır.
  • center: Elementler ortalanır.
  • nearest: Elementler , görünür alanda en yakın olan öğeye göre hizalanır.
  • none: scroll-snap hizalamayı devre dışı bırakır.

Aşağıdaki örnekte, scroll-snap-alignment özelliği, “center” olarak ayarlanmıştır:

.container {
  scroll-snap-type: mandatory;
  scroll-snap-align: center;
}

Mesela, bir fotoğraf galerisi var. Bu galeri, birkaç resim ve açıklama içeriyor ve kullanıcının kaydırması gerekiyor.

<div class="gallery-container">
  <div class="gallery-item">
    <img src="image1.jpg" alt="image 1">
    <p>Image 1 Description</p>
  </div>
  <div class="gallery-item">
    <img src="image2.jpg" alt="image 2">
    <p>Image 2 Description</p>
  </div>
  <div class="gallery-item">
    <img src="image3.jpg" alt="image 3">
    <p>Image 3 Description</p>
  </div>
</div>

Yukarıdaki HTML kodu, üç adet galeri öğesi içeriyor. scroll-snap özelliğini kullanarak bu öğeleri hizalayabiliriz. Örneğin, aşağıdaki CSS kodu, scroll-snap-type ve scroll-snap-alignment özelliklerini kullanarak galeriyi hizzalayalım:

.gallery-container {
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
  scroll-snap-align: center;
}
.gallery-item {
  scroll-snap-align: center;
  scroll-snap-stop: always;
}

Yukarıdaki kod, y ekseni boyunca scroll-snap-type özelliğini kullanarak kaydırmayı zorunlu kılar. scroll-snap-alignment özelliği de galeri öğelerini ortalamak için kullandık.

Detaylı Bilgi :

https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-type

https://www.w3schools.com/cssref/css_pr_scroll-snap-type.php