Javascript 30 - Gün 5
24 Mart 2023Bugün CSS flex kullanarak bir resim galerisi yapacağız.
Projenin demosu : Demo
Başlangıç dosyalarını bulabileceğiniz repom: js-30 | github
1. Flex ile galeriyi oluşturalım
Başlangıçta site aşağıdaki gibi duruyor.
Resimlerin yanyana gelmesini sağlamak için .panels
containerını flex yapalım.
Resimler yanyana geldi ancak genişliğin tamamı kullanılmıyor, kullanılması için flex'in içindeki elemanların sahip olduğu .panel
class'ına flex:1
özelliğini ekleyelim.
.panel
içindeki yazıların alt alta sıralanması ve dikeyde ortalanması için aşağıdaki değişiklikleri yapalım.
Şimdi her paneldeki ilk ve son metinleri (örneğin ilk panel için "Hey" ve "Dance!" metinlerini) başlangıçta gizlemek ve yalnızca .open-active
classına sahip olduklarında göstermek için aşağıdaki değişiklikleri yapalım.
Artık yalnızca .open-active
classına sahip panellerde yazılar görünecektir.
Son olarak .open
class'ına sahip panellerin genişliğini flex ile büyütelim.
2. Javascript ile panellere tıklandığında gerekli sınıfları ekleyelim
Javascript tarafında .panel
class'ına sahip tüm elementleri seçelim ve bunlara tıklandığında ".open" classını ekleyelim.
Ayrıca 2.Gün'de gördüğümüz transitionend
olayında da ".open-active" class'ını ekleyerek yazıların görünmesini sağlayalım.
Bu projeden öğrendiklerim
- flex:1 ile flex elemanlarının mevcut genişliğin tamamını kullanılması sağlanabilir.
toggle
ile elementteki bir classı ekleyip/silebiliriz.- transitionend eventinde 'transition'a uğrayan özelliğin flex olduğunu anlamak için e.propertyName kullanılabilir.