Na potrzeby dydaktyczne potrzebuję stworzyć prostą galerię zdjęć typu slideshow. Nie chcę używać dodatkowych bibliotek, czy framework-ów. Ma być czysty JS, PHP lub oba jednocześnie. Częściowo zrealizowałem to poniższym kodem (HTML i CSS odpuszam, oczywistości):
*function slide()
{
n++;
if (n==4) {n=1}; // testowo 3 zdjęcia w katalogu
document.getElementById("galeria").innerHTML = '<img src="'+n+'.jpg" alt="obrazek" width=400px height=250px>';
setTimeout(slide, 2000);
}*
Niby fajnie, ale są tutaj co najmniej 2 zagadnienia do ogarnięcia.
-
Za każdym razem, gdy dodam nowe zdjęcie do katalogu, muszę edytować powyższy kod. Bo skąd JS ma wiedzieć, ile zdjęć jest w katalogu? Tymczasem chcę, żeby za każdym razem gdy dodam lub usunę zdjęcie z katalogu galeria aktualizowała się automatycznie, bez ingerencji w kod. Coś takiego co prawda uzyskałem tworząc skrypt w PHP oraz korzystając z funkcji globe():
foreach (glob(".jpg") as $plik) {}
Ale czy za pomocą JS faktycznie tak nie da się zrobić? Z drugiej strony im mniej kodu widać po stronie przeglądarki (PHP jest na serwerze, JS każdy może pobrać i wyświetić), tym lepiej... -
Płynne przejście pomiędzy zdjęciami. Kombinowałem z właściwością transition w stosunku do znaczika img src, ale nie zadziałało. Poszukałem w internecie i okazuje się, że mam 2 opcje: albo użyć dodatkowej bilioteki, albo jak poniżej:
wstawiam wszystkie obrazki jeden na drugim (odpowiednie ustawienie właściwości position), a potem po prostu przełączam
opacity wybranego zdjęcia z 0 na 1 i na odwrót. Faktycznie nie ma innego lepszego sposobu?