CSS aspect-ratio i object-fit z wyborem punktu ostrości

Przewodnik po CSS aspect-ratio i object-fit

CSS aspect-ratio i object-fit: demonstracje na żywo i Tailwind | We.Inc

Zablokuj proporcje pola przez aspect-ratio, a potem dopasuj w nim zdjęcia przez object-fit cover, contain, fill, none lub scale-down. Kliknij, aby ustawić punkt ostrości przez object-position.

Dwie właściwości rozwiązują większość problemów z rozmiarem obrazków. aspect-ratio: 16 / 9 sprawia, że pole zachowuje ten kształt przy każdej szerokości, zastępując stary hack z padding-top. object-fit decyduje, jak img lub video wypełnia to pole: cover przycina, contain dodaje pasy, fill rozciąga. object-position wybiera, która część pozostaje widoczna, gdy cover przycina.

Szybka ściąga

Poniżej jedno testowe zdjęcie siedzi w polu, którego kształt możesz zmieniać. Przełączaj między pięcioma wartościami object-fit, klikaj zdjęcie, aby przesunąć punkt ostrości, i kopiuj CSS lub klasy Tailwind. Niżej: padding hack obok aspect-ratio, responsywne osadzenia wideo i siatki kart z równymi miniaturami.

Najczęściej zadawane pytania

Czym różni się aspect-ratio od object-fit?

aspect-ratio nadaje kształt samemu polu, dla dowolnego elementu. object-fit dotyczy tylko treści zastępowanej, takiej jak img, video i canvas, i decyduje, jak ta treść jest rysowana w swoim polu. Zwykle używasz obu: aspect-ratio na obrazku, aby ustalić jego kształt, i object-fit: cover, aby zdjęcie go wypełniło.

Dlaczego object-fit nic nie robi?

Pole obrazka ma te same proporcje co zdjęcie, więc nie ma czego przycinać ani rozciągać. object-fit pokazuje różnicę dopiero, gdy pole ma inny kształt, na przykład stałą wysokość plus width: 100% albo aspect-ratio inne niż w pliku.

Czy nadal potrzebuję hacka z padding-top?

Nie w obecnych przeglądarkach. aspect-ratio działa w Chrome, Edge, Firefoksie i Safari od 2021. Zostaw hack tylko wtedy, gdy musisz wspierać starsze przeglądarki, i sprawdź caniuse dla swoich odbiorców.

Czy object-fit działa na obrazkach tła?

Nie. Dla teł CSS odpowiednikami są background-size: cover lub contain oraz background-position dla punktu ostrości. object-fit jest dla prawdziwych elementów img i video, które lepiej nadają się do obrazków z treścią, bo niosą tekst alt i obsługują srcset.

Czy aspect-ratio można użyć na div?

Tak. Może go przyjąć każdy element. div z width: 100% i aspect-ratio: 1 staje się kwadratem rosnącym razem z kolumną, co przydaje się przy miejscach na mapy, awatarach i szkieletowych loaderach.

Jak przeglądarka rozwiązuje aspect-ratio

Wybór punktu ostrości

aspect-ratio obok padding hacka

Przed aspect-ratio pole dostawało kształt z padding-top podanego w procentach, bo procenty pionowego paddingu liczone są względem szerokości. To działa, ale treść w środku musi być pozycjonowana absolutnie. Oba pola poniżej mają 16:9.

Stare i nowe, ten sam efekt

56.25% to 9 podzielone przez 16. Nowoczesna wersja potrzebuje jednej linii i pozwala treści płynąć normalnie.

Wszystkie pięć wartości object-fit na tym samym zdjęciu

Zdjęcie ma 3:2, a każde pole jest kwadratowe, więc każda wartość musi poradzić sobie z niedopasowaniem i różnice są wyraźnie widoczne.

Wartości object-fit

fill, contain, cover, none, scale-down

To samo zdjęcie 300 na 200 w pięciu kwadratach po 110 pikseli. Obserwuj czerwoną kropkę: to obiekt, którego cover nie może zgubić.

Responsywne wideo i osadzenia

iframe w stylu YouTube, który zachowuje 16:9

Nadaj iframe szerokość 100% i aspect-ratio. Nie trzeba otaczającego diva ani pozycjonowania absolutnego.

Siatki kart z równymi miniaturami

Każda miniatura w tym samym kształcie

Przesyłane pliki mają różne kształty. aspect-ratio plus object-fit: cover porządkuje siatkę bez edycji choćby jednego pliku.

Klasy Tailwind dla proporcji i dopasowania

Narzędzia Tailwind v4 (jeśli używasz starszej wersji, sprawdź dokumentację v3)

Plac zabaw: proporcje, dopasowanie i punkt ostrości

Zdjęcie źródłowe (3:2). Kliknij je albo ustaw na nim fokus i użyj strzałek, aby ustawić punkt ostrości.

Ustaw punkt ostrości, teraz {pos}

Testowy krajobraz z czerwoną kropką jako obiektem

Wróć do środka

Wynik w polu {ratio} z object-fit: {fit}

Proporcje pola

Punkt ostrości ma największe znaczenie przy cover i none. Przy contain lub scale-down decyduje, gdzie trafią puste pasy.

Kopiuj CSS

Kopiuj klasy

Potrzebujesz dokładnego rozmiaru w pikselach dla proporcji? Użyj

kalkulatora proporcji

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony