Görseller için Öncesi&Sonrası Karşılaştırma

Bu yazımda da yukarıda hızlı kod yazımı videosunu izleyebileceğiniz başka bir örnekten bahsedeceğim. İki görseli üst üste koyacağız ve en üste koyacağımız bir element ile bu görselleri birbiri ile karşılaştırabileceğiz. Örneğin kodlarına buradan ulaşabilirsiniz.

Öncelikle HTML elementlerimizi yerleştiriyoruz. ba-wrap sınıfında bir div oluşturup diğer elementlerimizi bunun içine yerleştirelim. Bu div içine left ve right sınıflı iki img elementi ve handle sınıfında bir div elementi ekliyoruz. Görsellerin aynı boyutta olmaları önemli.

CSS tarafında da karmaşık durum yok. ba-wrap elementimize genişliğimizi veriyoruz. Diğer elementleri position:absolute olarak kullanıyoruz. handle elementimize ayrıca transform: translateX(0) veriyoruz ki Javascript tarafında bu stili kullanınca referans olarak sıfırda olduğundan emin olalım. Ayrıca yeni bir DOM elementi kullanmak yerine handle::after sanal(pseudo) elementini kullanarak yuvarlak, beyaz, üzerine tıklayıp sürükleyebileceğimiz bir görüntü elde ediyoruz.

Ve tüm işin yapıldığı Javascript tarafına geliyoruz. Öncelikle beforeAfter adında bir değişken oluşturup buna kendini çağıran/çalıştıran bir fonksiyon ataması yapıyoruz. DOM elementlerimizi uyumlu isimde değişkenlerimize atıyoruz.

document.body.onload olayında görselimizin genişliğini ve yüksekliğini alarak bunu handle‘a yüksekli vermek ve ba-wrap‘in ortasına konumlamak için kullanıyoruz. Ayrıca clip stili özelliği ile right sınıflı görselimizin de yarısını kesiyoruz.

Burada dikkat edilmesi gereken nokta, mousemove olayını window için çağırmamız gerekiyor, aksi halde hızlı hareketlerde kullanılamaz oluyor. mousedown olayını da handle elementimize veriyoruz. Bu olayda isDragging değişkenini true yaparak mousemove olayına bağladığımız fonksiyonun çalışmaya devam etmesini sağlıyoruz. Tersi şekilde mouseup olayında da bu değişkeni false yapıp mousemove olayına bağlı fonksiyonu pasifleştirmiş oluyoruz.

handle elementimizin konumunu handleTranslateX adındaki değişkende tutuyoruz. Bu değişken için alt ve üst limitler vererek ba-wrap dışına sürüklemeleri engellemiş oluyoruz.

onDragHandle fonksiyonu her bir mouse hareketinde çağırılıyor. mousePreviousX ile tuttuğumuz bir önceki mouse X konumu ile şimdiki konumu arasındaki fark kadar handle elementimizi oynatıyoruz. handle konumuna göre right görselimize clip stilimizi veriyoruz.

Bir Cevap Yazın