Znalazłem sposób na zrobienie tego za pomocą CSS, ale musisz być ostrożny, ponieważ może się to zmienić w zależności od przepływu Twojej strony internetowej. Zrobiłem to, aby osadzić wideo o stałym współczynniku kształtu w części szerokości witryny na mojej stronie.
Załóżmy, że masz osadzony film:
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
Następnie możesz umieścić to wszystko w div z klasą „wideo”. Ta klasa wideo prawdopodobnie będzie płynnym elementem w Twojej witrynie, tak że sama w sobie nie ma bezpośrednich ograniczeń wysokości, ale po zmianie rozmiaru przeglądarki zmieni szerokość w zależności od przepływu strony internetowej. Byłby to element, w którym prawdopodobnie próbujesz uzyskać osadzone wideo przy zachowaniu określonego współczynnika kształtu wideo.
W tym celu umieszczam obraz przed osadzonym obiektem w div klasy „video”.
!!! Ważne jest, aby obraz miał prawidłowy współczynnik kształtu, który chcesz zachować. Upewnij się również, że rozmiar obrazu jest NAJMNIEJ tak duży, jak najmniejsze, czego oczekujesz, że wideo (lub cokolwiek utrzymujesz AR) będzie oparte na twoim układzie. Pozwoli to uniknąć potencjalnych problemów z rozdzielczością obrazu, gdy zostanie on zmieniony w procentach. Na przykład, jeśli chcesz zachować proporcje 3: 2, nie używaj tylko obrazu 3 na 2 piksele. Może działać w pewnych okolicznościach, ale nie przetestowałem go i prawdopodobnie dobrym pomysłem byłoby go uniknąć.
Prawdopodobnie powinieneś już mieć taką minimalną szerokość zdefiniowaną dla płynnych elementów swojej witryny. Jeśli nie, warto to zrobić, aby uniknąć odcinania elementów lub nakładania się, gdy okno przeglądarki staje się zbyt małe. W pewnym momencie lepiej jest mieć pasek przewijania. Najmniejsza szerokość, jaką powinna uzyskać strona internetowa, to około ~ 600 pikseli (w tym dowolne kolumny o stałej szerokości), ponieważ rozdzielczości ekranu nie są mniejsze, chyba że masz do czynienia z witrynami przyjaznymi dla telefonu. !!!
Używam całkowicie przezroczystego PNG, ale nie sądzę, żeby miało to znaczenie, jeśli zrobisz to dobrze. Lubię to:
<div class="video">
<img class="maintainaspectratio" src="maintainaspectratio.png" />
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
</div>
Teraz powinieneś być w stanie dodać CSS podobny do następującego:
div.video { ...; position: relative; }
div.video img.maintainaspectratio { width: 100%; }
div.video object { position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; }
div.video embed {width: 100%; height: 100%; }
Upewnij się, że usunąłeś również wszelkie wyraźne deklaracje wysokości lub szerokości w obiekcie i umieściłeś znaczniki, które zwykle pochodzą z kopiowanym / wklejanym kodem osadzania.
Sposób jego działania zależy od właściwości pozycji elementu klasy wideo i żądanego elementu ma określony współczynnik kształtu. Wykorzystuje sposób, w jaki obraz zachowa odpowiedni współczynnik kształtu po zmianie rozmiaru w elemencie. Mówi cokolwiek innego, co znajduje się w elemencie klasy wideo, aby w pełni skorzystać z nieruchomości zapewnianej przez obraz dynamiczny, zmuszając jego szerokość / wysokość do 100% elementu klasy wideo dostosowywanego przez obraz.
Całkiem fajnie, co?
Być może będziesz musiał się z nim trochę pobawić, aby uruchomić go z własnym projektem, ale dla mnie to zadziwiająco dobrze. Istnieje ogólna koncepcja.