Estaba leyendo esta publicación de stackoverflow titulada "¿Puedes hacer que un iFrame responda?", Y uno de los comentarios / respuestas me llevó a este jfiddle.
Pero cuando traté de implementar el HTML y CSS para satisfacer mis necesidades, no tuve los mismos resultados / éxito. Creé mi propio violín JS para poder mostrarte cómo no funciona igual para mí. Estoy seguro de que tiene algo que ver con el tipo de iFrame que estoy usando (p. Ej., ¿Las imágenes de los productos también pueden ser sensibles o algo?
Mi principal preocupación es que cuando los lectores de mi blog visitan mi blog en su iPhone, no quiero que todo esté en ancho x (100% para todo mi contenido) y luego el iFrame se comporta mal y es el único elemento más ancho (y por lo tanto se pega) más allá del resto del contenido, si eso tiene sentido ??)
De todos modos, ¿alguien sabe por qué no funciona? gracias.
aquí está el HTML y CSS de MY JSFIDDLE (si no desea hacer clic en el enlace):
<div class="wrapper">
<div class="h_iframe">
<!-- a transparent image is preferable -->
<img class="ratio" src="http://www.brightontheday.com/wp-content/uploads/2013/07/placeholder300.png" />
<iframe frameborder='0' height='465px' width='470px' scrolling='no' src='http://currentlyobsessed.me/api/v1/get_widget?wid=30&blog=Brighton+The+Day&widgetid=38585'
frameborder="0" allowfullscreen></iframe>
</div>
</div>
y aquí está el CSS que lo acompaña:
.wrapper {
width: 100%;
height: 100%;
margin: 0 auto;
background: #ffffff;
}
.h_iframe {
position: relative;
}
.h_iframe .ratio {
display: block;
width: 100%;
height: auto;
}
.h_iframe iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
fuente
Respuestas:
Te presento la increíble solución de Singing Cat =)
jsFiddle: http://jsfiddle.net/omarjuvera/8zkunqxy/2/
A medida que mueve la barra de la ventana, verá iframe para cambiar el tamaño de forma receptiva
Alternativamente, también puede usar la técnica de relación intrínseca : esta es solo una opción alternativa de la misma solución anterior (tomate, tomate)
fuente
Intenta usar este código para hacerlo sensible
fuente
Encontré una solución de Dave Rupert / Chris Coyier. Sin embargo, quería que el desplazamiento estuviera disponible, así que se me ocurrió esto:
// HTML
// CSS
fuente
Puede usar estos trucos mencionados en este sitio http://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php .
Es muy útil y fácil de entender. Todo lo que necesitas para crear
Aquí está su violín js editado para demostración.
fuente
mira esta solución ... funciona para mí >> https://jsfiddle.net/y49jpdns/
fuente
fuente
DA tiene razón. En su propio violín, el iframe es realmente receptivo. Puede verificar eso en firebug marcando el tamaño del cuadro de iframe. Pero algunos elementos dentro de ese iframe no responden, por lo que "sobresalen" cuando el tamaño de la ventana es pequeño. Por ejemplo,
div#products-post-wrapper
el ancho es de 8800 px.fuente
iFrames PUEDE ser TOTALMENTE receptivo manteniendo su relación de aspecto con una pequeña técnica CSS llamada Técnica de relación intrínseca . Escribí una publicación de blog abordando esta pregunta específicamente: https://benmarshall.me/responsive-iframes/
Esta esencia es:
BOOM, totalmente receptivo!
fuente
Los iframes no pueden responder. Puede hacer que el contenedor de iframe responda, pero no el contenido que muestra, ya que es una página web que tiene su propio alto y ancho establecidos.
El enlace de violín de ejemplo funciona porque muestra un enlace de video de YouTube incrustado que no tiene un tamaño declarado.
fuente
Simple, con CSS:
Tenga en cuenta : ¡pero no hará que el contenido dentro de él responda!
2nd EDIT: hay dos tipos de iframes receptivos, según su contenido interno:
uno que es cuando el interior del iframe solo contiene un video o una imagen o muchos posicionados verticalmente, para lo cual las dos filas anteriores de código CSS son casi completamente suficientes, y la relación de aspecto tiene significado ...
y el otro es el:
tipo de contenido de formulario de contacto / registro , donde no tenemos que mantener la relación de aspecto, sino evitar que aparezca la barra de desplazamiento y que el contenido fluya por debajo del contenedor. En el dispositivo móvil, no ve la barra de desplazamiento, simplemente desplácese hasta que vea el contenido (del iframe). Por supuesto, le da al menos algún tipo de
height
, para que la altura del contenido se adapte al espacio vertical que ocurre en una pantalla más estrecha, con consultas de medios, como, por ejemplo:fuente
Noté que la publicación de leowebdev parecía funcionar de mi parte, sin embargo, eliminó dos elementos del sitio que estoy tratando de hacer: el desplazamiento y el pie de página.
El desplazamiento lo recuperé agregando un
scrolling="yes"
código de inserción Al iframe.No estoy seguro de si el pie de página se elimina automáticamente debido a la capacidad de respuesta o no, pero espero que alguien más sepa esa respuesta.
fuente
Elimine la altura y el ancho del iframe especificados en píxeles y use el porcentaje
fuente
fuente
me resolvió ajustando el código de @Connor Cushion Mulhall por
fuente
Debido a las restricciones de seguridad del navegador, deberá incluir el archivo Javascript tanto en la página "principal" como en la página que se incrusta a través de un iframe ("secundario").
En la versión actual, la página principal debe incluir la última versión de jQuery. No hay dependencia en jQuery para la funcionalidad de la página secundaria. En futuras versiones, también nos gustaría eliminar la dependencia de jQuery para el padre.
Nota: el parámetro "xdomain" en la llamada a la función makeResponsive () es opcional.
Muestra de código<!-- Activate responsiveness in the "child" page -->
<script src="/js/jquery.responsiveiframe.js"></script>
<script>
var ri = responsiveIframe();
ri.allowResponsiveEmbedding();
</script>
<!-- Corresponding code in the "parent" page -->
<script src="/js/jquery.js"></script>
<script src="/js/jquery.responsiveiframe.js"></script>
<script>
;(function($){
$(function(){
$('#myIframeID').responsiveIframe({ xdomain: '*'});
});
})(jQuery);
</script>
fuente
Con el siguiente marcado:
El siguiente CSS hace que el video sea de ancho completo y 16: 9:
fuente
Estoy buscando más sobre este tema y finalmente obtengo una buena respuesta. Usted puede tratar como esta :
fuente
La mejor solución para hacer que un "iframe" responda y se ajuste a todas las pantallas del dispositivo, simplemente aplique este código (funciona muy bien con los sitios de juegos):
Si está buscando un contenedor de juegos receptivo que se ajuste a todos los dispositivos, aplique este código que utiliza consultas avanzadas de CSS @media.
fuente
IFrame totalmente receptivo para situaciones donde la relación de aspecto es desconocida y el contenido en el iFrame es totalmente receptivo.
Ninguna de las soluciones anteriores funcionó para mi necesidad, que era crear un iFrame totalmente receptivo que tuviera contenido dinámico totalmente receptivo dentro de él. Mantener cualquier tipo de relación de aspecto no era una opción.
Código:
También creé un tiempo de espera para que al cambiar el tamaño de la función no se llamara un millón de veces.
fuente
fuente
Mira este código completo. Puede usar los contenedores en porcentajes como el siguiente código:
Echa un vistazo a esta página de demostración.
fuente
Esta solución funcionó para mí. Y lo encontré más fácil. https://jameshfisher.com/2017/08/30/how-do-i-make-a-full-width-iframe/
fuente