Hareket azaltma tercihi.
İşletim sistemindeki «hareketi azalt» ayarı, kullanıcının animasyonlardan rahatsız olduğunu bildiren bir sinyaldir ve web sitesi bu sinyali okuyup davranışını değiştirebilir.
Hareket, bazı kullanıcılar için estetik bir katman değil fiziksel bir rahatsızlık kaynağıdır. Vestibüler bozukluğu olan kişilerde büyük ölçekli hareket — kaydırmayla sürüklenen arka planlar, yakınlaşan geçişler, paralaks katmanlar — baş dönmesi, mide bulantısı ve dengesizlik üretebilir. Bu, tercih meselesi değil; kullanıcının siteyi kullanamaması meselesidir.
İşletim sistemleri bu yüzden yıllardır bir ayar sunuyor ve tarayıcılar o ayarı web sayfalarına aktarıyor. Sinyal hazır ve okunması tek satırlık bir iş; asıl soru, sinyal okunduktan sonra ne yapılacağıdır.
Kısmak yetmez
Yaygın uygulama, hareket azaltma tercihi algılandığında tüm animasyon sürelerini sıfıra ya da çok küçük bir değere indirmektir. Bu tek satırlık çözüm yaygın olarak paylaşılır ve çoğu durumda işe yarar — ama iki önemli boşluk bırakır.
Birincisi: süreyi sıfırlamak animasyonu durdurmaz, sonsuz hızlı yapar. Kaydırmaya bağlı bir etki, süre sıfırken bile kaydırma sırasında öğeleri anında yer değiştirir ve bu, yavaş bir geçişten daha rahatsız edici olabilir. Kaydırmaya bağlı hareketin çözümü süre değil, kurmama'dır.
İkincisi: animasyon kütüphaneleri süre sıfır olsa bile çalışmaya devam eder — hesap yapar, kare üretir, bellek tüketir. Kullanıcı hareketi görmez ama cihazı hareketin bedelini öder. Düşük güçlü bir cihazda bu, sayfanın gereksiz yere ısınması ve pilin boşalması demektir.
Hareketi kısmak yetmez; kurulmaması gerekir.
Tam alternatif akış
Daha sağlam yaklaşım, hareket azaltma tercihini bir stil ayarı değil bir AKIŞ ayarı saymaktır: tercih açıksa hareket katmanı hiç kurulmaz. Kaydırma kütüphanesi başlatılmaz, kaydırmaya bağlı zamanlayıcılar oluşturulmaz, gölgelendirici çalıştırılmaz, kayan şerit durur, özel imleç kurulmaz.
Bu sitede uygulanan yaklaşım budur ve doğrulama süiti iki yönlü ölçüyor: tercih açıkken hiçbir hareket katmanının kurulmadığı, ve tercih kapalıyken hepsinin gerçekten çalıştığı. İkinci ölçüm — karşı kanıt — kritiktir, çünkü «hareket kapalıyken sakin» testi, hareket hiç yazılmamışsa da yeşil yanar. Yalancı bir yeşildir.
Bir ayrıntı daha var: tercih, sayfa yüklendikten sonra da değişebilir. Kullanıcı sekme açıkken sistem ayarını değiştirebilir ve doğru davranış, akışın canlı olarak sökülüp yeniden kurulmasıdır. Yalnız yükleme anında okunan bir tercih, o kullanıcı için yanlış kalır.
Neyin durması gerekir
Hareket azaltma tercihi «tüm animasyon yasak» demek değildir. Rahatsızlık üreten şey büyük ölçekli, konum değiştiren ve kullanıcının kontrolü dışında olan harekettir. Küçük, yerinde ve geri bildirim amaçlı geçişler genelde sorun değildir.
- Durmalı — paralaks katmanlar, kaydırmaya bağlı sürüklenme, yakınlaşan/uzaklaşan geçişler, otomatik oynayan video ve arka plan döngüleri, kayan şeritler, ekranı kateden büyük geçişler.
- Kalabilir — renk geçişleri, opaklık değişimleri, küçük ölçek değişimleri, odak halkasının belirmesi. Konum değiştirmeyen, kısa ve yerinde olanlar.
- Her zaman durmalı — üç saniyeden uzun otomatik hareket kullanıcı tarafından duraklatılabilmeli (2.2.2, A seviyesi). Bu, tercih ayarından bağımsız bir şarttır.
- Asla olmamalı — saniyede üçten fazla yanıp sönme (2.3.1, A seviyesi). Nöbet tetikleme riski taşır ve hiçbir koşulda kabul edilebilir değildir.
Son iki madde tercihten bağımsızdır ve A seviyesindedir: kullanıcı hareket azaltma ayarını açmamış olsa bile geçerlidir. Otomatik oynayan bir karusel, duraklatma kontrolü yoksa ayarlardan bağımsız olarak ihlaldir.
Alternatifin de tasarlanması gerekir
Hareketi kaldırmak, hareketin taşıdığı bilgiyi de kaldırabilir ve bu gözden kaçan bir risktir. Bir geçiş animasyonu, kullanıcıya «yeni bir bölüme geçtiniz» diyorsa, animasyon kaldırıldığında o bilgi de kaybolur. Bir yükleme göstergesi dönmüyorsa, bir şeyin devam ettiği anlaşılmaz.
Doğru yaklaşım, hareketsiz durumu bir eksiklik değil ayrı bir tasarım olarak ele almaktır. Hareket bilgi taşıyorsa, o bilgi hareketsiz durumda başka bir yolla verilmelidir — bir kenar çizgisi, bir renk değişimi, bir metin. Video ya da döngü yerine duran bir kare gösterilmelidir, boşluk değil.
Bu sitede §17.8 canlı önizleme döngüleri tam olarak böyle ele alınmış: hareket azaltma tercihi açıkken video hiç yüklenmiyor ve yerine statik bir poster kare duruyor. Kullanıcı hareketi görmüyor ama içeriği görüyor — ve süit poster karenin gerçekten yüklendiğini ayrıca ölçüyor.
Genel ilke şudur: hareket azaltma, sitenin daha az şey anlattığı bir mod olmamalıdır. Aynı şeyi hareket etmeden anlatan bir mod olmalıdır. Aradaki fark, tercihi açmış kullanıcının ikinci sınıf bir deneyim yaşayıp yaşamamasıdır.
Test etmek: iki yönlü
Hareket azaltma desteğini test etmenin tek yönlü yapılması, en sık yapılan hatadır. Tercih açılır, sayfa sakin görünür, «çalışıyor» denir. Oysa bu test, hareketin hiç yazılmamış olduğu bir sitede de aynı sonucu verir — yani hiçbir şey kanıtlamaz.
Doğru test iki yönlüdür ve iki ayrı ölçüm ister. Tercih açıkken hareket katmanlarının kurulmadığı doğrulanır; tercih kapalıyken aynı katmanların GERÇEKTEN kurulduğu doğrulanır. İkincisi olmadan birincisi yalancı bir yeşildir.
- Tercihi aç, sayfayı yükle — kaydırma kütüphanesi kurulmuş mu, gölgelendirici çalışıyor mu, zamanlayıcı var mı? Hiçbiri olmamalı.
- Tercihi kapat, sayfayı yükle — aynı katmanların hepsi kurulmuş mu? Kurulmamışsa özellik hiç yok demektir.
- Sayfa açıkken tercihi değiştir — akış canlı olarak sökülüyor ve yeniden kuruluyor mu? Yalnız yüklemede okunan tercih, o kullanıcı için yanlış kalır.
- Alternatifi kontrol et — hareket kaldırıldığında yerinde ne var? Poster kare mi, boşluk mu? Boşluksa bilgi kaybolmuş demektir.
İşletim sistemi ayarını değiştirmeden test etmek de mümkündür: tarayıcıların geliştirici araçları, bu tercihi sayfa bazında zorlamaya izin verir. Bu, testi hızlandırır ama gerçek cihazda bir kez doğrulamanın yerini tutmaz.
Performans yan faydası
Hareket azaltma tercihine tam alternatif akışla cevap vermenin, erişilebilirlik dışında somut bir yan faydası var: performans. Hareket katmanı hiç kurulmadığında kütüphane çalıştırılmaz, kare üretilmez, gölgelendirici derlenmez ve bellek ayrılmaz.
Bu, tercihi açmış kullanıcılar için sayfanın belirgin biçimde daha hafif olması demektir — ve o kullanıcılar arasında düşük güçlü cihaz kullananların oranı düşünüldüğünde, faydanın en çok ihtiyacı olanlara gitmesi anlamına gelir. Erişilebilirlik ve performansın örtüştüğü yerlerden biri budur.
Tersi de doğrudur: hareketi yalnızca kısan bir uygulama, tercih açık olsa bile tam maliyeti ödetir. Kullanıcı hiçbir şey görmez ama cihazı animasyon kütüphanesini çalıştırmaya devam eder. Görünmeyen bir hesap için harcanan pil, hiçbir kullanıcıya fayda sağlamaz.