Ich habe einen Weg gefunden, dies mit CSS zu tun, aber Sie müssen vorsichtig sein, da es sich je nach Ablauf Ihrer eigenen Website ändern kann. Ich habe es getan, um Videos mit einem konstanten Seitenverhältnis in einen Bereich mit flüssiger Breite meiner Website einzubetten.
Angenommen, Sie haben ein eingebettetes Video wie dieses:
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
Sie könnten dies alles in einem Div mit einer "Video" -Klasse platzieren. Diese Videoklasse wird wahrscheinlich das fließende Element auf Ihrer Website sein, sodass es für sich genommen keine direkten Höhenbeschränkungen gibt. Wenn Sie jedoch die Größe des Browsers ändern, ändert sich die Breite entsprechend dem Fluss der Website. Dies ist das Element, in das Sie wahrscheinlich versuchen, Ihr eingebettetes Video zu integrieren, während Sie ein bestimmtes Seitenverhältnis des Videos beibehalten.
Zu diesem Zweck habe ich ein Bild vor das eingebettete Objekt innerhalb der Klasse "Video" div gesetzt.
!!! Der wichtige Teil ist, dass das Bild das richtige Seitenverhältnis hat, das Sie beibehalten möchten. Stellen Sie außerdem sicher, dass die Größe des Bildes MINDESTENS so groß ist wie die kleinste, von der Sie erwarten, dass das Video (oder was auch immer Sie den AR beibehalten) basierend auf Ihrem Layout erhalten wird. Dadurch werden potenzielle Probleme bei der Auflösung des Bilds vermieden, wenn die Größe in Prozent geändert wird. Wenn Sie beispielsweise ein Seitenverhältnis von 3: 2 beibehalten möchten, verwenden Sie nicht nur ein 3 x 2 Pixel großes Bild. Es kann unter bestimmten Umständen funktionieren, aber ich habe es nicht getestet, und es wäre wahrscheinlich eine gute Idee, dies zu vermeiden.
Sie sollten wahrscheinlich bereits eine Mindestbreite wie diese für flüssige Elemente Ihrer Website definiert haben. Wenn nicht, ist es eine gute Idee, dies zu tun, um zu vermeiden, dass Elemente abgeschnitten werden oder sich überlappen, wenn das Browserfenster zu klein wird. Es ist besser, irgendwann eine Bildlaufleiste zu haben. Die kleinste Breite, die eine Webseite erhalten sollte, liegt bei etwa 600 Pixel (einschließlich Spalten mit fester Breite), da die Bildschirmauflösungen nur dann kleiner werden, wenn Sie mit telefonfreundlichen Websites arbeiten. !!!
Ich verwende ein vollständig transparentes PNG, aber ich denke nicht, dass es wichtig ist, wenn Sie es richtig machen. So was:
<div class="video">
<img class="maintainaspectratio" src="maintainaspectratio.png" />
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
</div>
Jetzt sollten Sie in der Lage sein, CSS ähnlich dem folgenden hinzuzufügen:
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%; }
Stellen Sie sicher, dass Sie auch alle expliziten Höhen- oder Breitendeklarationen innerhalb des Objekts entfernen und Tags einbetten, die normalerweise mit kopiertem / eingefügtem Einbettungscode geliefert werden.
Die Funktionsweise hängt von den Positionseigenschaften des Videoklassenelements ab, und das gewünschte Element hat ein bestimmtes Seitenverhältnis. Es nutzt die Art und Weise, wie ein Bild sein korrektes Seitenverhältnis beibehält, wenn die Größe in einem Element geändert wird. Es weist an, was sich sonst noch im Videoklassenelement befindet, um die durch das dynamische Bild bereitgestellte Fläche voll auszunutzen, indem seine Breite / Höhe auf 100% des vom Bild angepassten Videoklassenelements erzwungen wird.
Ziemlich cool, oder?
Möglicherweise müssen Sie ein wenig damit herumspielen, damit es mit Ihrem eigenen Design funktioniert, aber das funktioniert für mich überraschend gut. Das allgemeine Konzept ist da.