Ho trovato un modo per farlo usando i CSS, ma devi stare attento perché potrebbe cambiare a seconda del flusso del tuo sito web. L'ho fatto per incorporare video con proporzioni costanti all'interno di una porzione di larghezza fluida del mio sito web.
Supponi di avere un video incorporato come questo:
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
È quindi possibile inserire tutto questo all'interno di un div con una classe "video". Questa classe video sarà probabilmente l'elemento fluido nel tuo sito Web in modo tale che, di per sé, non abbia vincoli di altezza diretti, ma quando ridimensioni il browser cambierà in larghezza in base al flusso del sito web. Questo sarebbe l'elemento che probabilmente stai cercando di ottenere il tuo video incorporato mantenendo un certo rapporto di aspetto del video.
Per fare ciò, ho inserito un'immagine prima dell'oggetto incorporato all'interno della classe div "video".
!!! La parte importante è che l'immagine ha le proporzioni corrette che desideri mantenere. Inoltre, assicurati che la dimensione dell'immagine sia ALMENO grande quanto la più piccola che ti aspetti che il video (o qualunque cosa tu stia mantenendo l'AR) sia basata sul layout. Ciò eviterà qualsiasi potenziale problema nella risoluzione dell'immagine quando viene ridimensionata in percentuale. Ad esempio, se si desidera mantenere un rapporto di formato di 3: 2, non utilizzare solo un'immagine 3px per 2px. Potrebbe funzionare in alcune circostanze, ma non l'ho testato e probabilmente sarebbe una buona idea evitare.
Probabilmente dovresti già avere una larghezza minima come questa definita per gli elementi fluidi del tuo sito web. Altrimenti, è una buona idea farlo al fine di evitare di tagliare elementi o di sovrapporsi quando la finestra del browser diventa troppo piccola. È meglio avere una barra di scorrimento ad un certo punto. La larghezza minima che una pagina Web dovrebbe ottenere è di circa 600px (comprese eventuali colonne a larghezza fissa) perché le risoluzioni dello schermo non diminuiscono a meno che non si tratti di siti adatti al telefono. !!!
Uso un png completamente trasparente ma non credo davvero che finisca per importare se lo fai nel modo giusto. Come questo:
<div class="video">
<img class="maintainaspectratio" src="maintainaspectratio.png" />
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
</div>
Ora dovresti essere in grado di aggiungere CSS simili ai seguenti:
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%; }
Assicurati anche di rimuovere qualsiasi dichiarazione esplicita di altezza o larghezza all'interno dell'oggetto e di incorporare i tag che di solito vengono forniti con il codice di incorporamento copia / incolla.
Il modo in cui funziona dipende dalle proprietà di posizione dell'elemento della classe video e l'elemento desiderato deve mantenere un determinato formato. Sfrutta il modo in cui un'immagine manterrà le proporzioni corrette quando viene ridimensionata in un elemento. Indica a tutti gli altri elementi della classe video di sfruttare appieno il patrimonio immobiliare fornito dall'immagine dinamica forzando la sua larghezza / altezza al 100% dell'elemento della classe video che viene regolato dall'immagine.
Abbastanza bello, eh?
Potrebbe essere necessario giocarci un po 'per farlo funzionare con il tuo design, ma in realtà funziona sorprendentemente bene per me. Il concetto generale è lì.