Cześć, bez zagłębiania się logikę działania skryptu, z tego co mogłem wydedukować z Developer Tools w przeglądarce, to wygląda na to, że skrypt ustawia taką właściwość CSS:
.slider img {
object-fit: cover;
object-position: center;
}
`Object-fit` wyznacza sposób, w jaki zdjęcie jest umieszczane w nadrzędnym pojemniku.
Wartość `cover` daję właśnie to działanie, o którym wspominasz, że jest problematyczne, czyli ucinanie tej części zdjęcia, która się "nie mieści", zachowując przy tym prawidłowe proporcje zdjęcia. Natomiast `object-position` wyznacza to, jaką część obrazu chcemy by była widoczne, jeśli reszta ma być ucięta. Wartość `center` sprawia, że góra i dół są obcinane. Tak naprawdę to nawet te zdjęcia o 1600x900 są ucinane, lecz bardzo nieznacznie, więc być może po prostu nie zauważyłeś tego. W przypadku zdjęć 1200x900 ucięciu ulega znacznie większy rozmiar. To, czy zdjęcie jest z serwera czy z pliku lokalnego nie robi tu różnicy :)
Zapewne bardziej by Ci odpowiadała wartość `contain`. Jak nazwa wskazuje, całe zdjęcie ma być zawarte w nadrzędnym pojemniku. W tej sytuacji dostajemy te "czarne belki" po bokach zdjęcia, a proporcja jest zachowana. Wystarczy ustawić:
.slider img {
object-fit: contain;
}
Natomiast, w CodePen skrypt biblioteki będzie nadpisywał tą deklarację CSSa. W normalnym kodzie źródłowym, wystarczy podpiąć skrypt biblioteki przed plikiem CSS aby zaradzić temu. Nie wiem, czy w CodePen jest możliwość wpływania na kolejność podpinania plików. W ostateczności można użyć dwóch klas aby zastosować deklarację o wyższej specyficzności w CSS.
<img src="images/slides/foto-1.jpg" alt="" class="full-img">
.slider .full-img {
object-fit: contain;
}
Możesz poczytać więcej o `object-fit` na stronie MDN. Istnieje też opcja `fill`, która "rozciąga" zdjęcie aby wypełnić pojemnik, nie zachowując proporcji.
To jest moja pierwsza udzielona odpowiedź w tym serwisie, więc jeśli coś mógłbym poprawić to proszę, dajcie mi znać śmiało. :)