He encontrado una manera de hacer esto usando CSS, pero debes tener cuidado, ya que puede cambiar dependiendo del flujo de tu propio sitio web. Lo hice para insertar videos con una relación de aspecto constante dentro de una porción de ancho fluido de mi sitio web.
Digamos que tienes un video incrustado como este:
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
A continuación, puede colocar todo esto dentro de un div con una clase de "video". Esta clase de video probablemente será el elemento fluido en su sitio web de tal manera que, por sí misma, no tiene restricciones de altura directas, pero cuando cambie el tamaño del navegador cambiará de ancho de acuerdo con el flujo del sitio web. Este sería el elemento en el que probablemente esté intentando obtener su video incrustado mientras mantiene una cierta relación de aspecto del video.
Para hacer esto, pongo una imagen antes del objeto incrustado dentro del div de clase "video".
!!! La parte importante es que la imagen tiene la relación de aspecto correcta que desea mantener. Además, asegúrese de que el tamaño de la imagen sea AL MENOS tan grande como el más pequeño que espera que obtenga el video (o lo que sea que esté manteniendo el AR) según su diseño. Esto evitará posibles problemas en la resolución de la imagen cuando se cambia el tamaño porcentual. Por ejemplo, si desea mantener una relación de aspecto de 3: 2, no use solo una imagen de 3 px por 2 px. Puede funcionar en algunas circunstancias, pero no lo he probado, y probablemente sería una buena idea evitarlo.
Probablemente ya debería tener un ancho mínimo como este definido para elementos fluidos de su sitio web. De lo contrario, es una buena idea hacerlo para evitar cortar elementos o superponerlos cuando la ventana del navegador sea demasiado pequeña. Es mejor tener una barra de desplazamiento en algún momento. El ancho más pequeño que debe tener una página web es de alrededor de ~ 600px (incluidas las columnas de ancho fijo) porque las resoluciones de pantalla no se reducen a menos que se trate de sitios compatibles con teléfonos. !!!
Utilizo un png completamente transparente, pero realmente no creo que termine importando si lo haces bien. Me gusta esto:
<div class="video">
<img class="maintainaspectratio" src="maintainaspectratio.png" />
<object>
<param ... /><param ... />...
<embed src="..." ...</embed>
</object>
</div>
Ahora debería poder agregar CSS similar al siguiente:
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%; }
Asegúrese de eliminar también cualquier declaración explícita de alto o ancho dentro del objeto y las etiquetas de inserción que generalmente vienen con el código de inserción copiado / pegado.
La forma en que funciona depende de las propiedades de posición del elemento de clase de video y el elemento que desea mantener una cierta relación de aspecto. Aprovecha la forma en que una imagen mantendrá su relación de aspecto adecuada cuando se redimensiona en un elemento. Le dice a lo que sea que esté en el elemento de la clase de video que aproveche al máximo el espacio real proporcionado por la imagen dinámica al forzar su ancho / alto al 100% del elemento de la clase de video que la imagen ajusta.
Muy bien, ¿eh?
Es posible que tengas que jugar un poco para que funcione con tu propio diseño, pero esto realmente funciona sorprendentemente bien para mí. El concepto general está ahí.