Je lisais ce post de stackoverflow intitulé "Pouvez-vous rendre un iFrame responsive?", Et l'un des commentaires / réponses m'a conduit à ce jfiddle.
Mais lorsque j'ai essayé d'implémenter le HTML et le CSS pour répondre à mes besoins, je n'ai pas eu les mêmes résultats / succès. J'ai créé mon propre violon JS pour que je puisse vous montrer comment cela ne fonctionne pas de la même manière pour moi. Je suis sûr que cela a quelque chose à voir avec le type d'iFrame que j'utilise (par exemple, les images du produit doivent également être réactives ou quelque chose?)
Ma principale préoccupation est que lorsque les lecteurs de mon blog visitent mon blog sur leur iPhone, je ne veux pas que tout soit à x largeur (100% pour tout mon contenu), puis l'iFrame se comporte mal et est le seul élément plus large (et donc colle au-delà de tous les autres contenus - si cela a du sens ??)
Quoi qu'il en soit, est-ce que quelqu'un sait pourquoi cela ne fonctionne pas? Merci.
voici le HTML & CSS de MY JSFIDDLE (si vous ne voulez pas cliquer sur le lien):
<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>
et voici le CSS qui l'accompagne:
.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%;
}
la source
Réponses:
Je vous présente la solution The Incredible Singing Cat =)
jsFiddle: http://jsfiddle.net/omarjuvera/8zkunqxy/2/
Lorsque vous déplacez la barre de fenêtre, vous verrez iframe pour redimensionner de manière réactive
Alternativement, vous pouvez également utiliser la technique du ratio intrinsèque - Ceci est juste une option alternative de la même solution ci-dessus (tomate, tomate)
la source
Essayez d'utiliser ce code pour le rendre réactif
la source
J'ai trouvé une solution de Dave Rupert / Chris Coyier. Cependant, je voulais rendre le parchemin disponible et j'ai donc proposé ceci:
// HTML
// CSS
la source
Vous pouvez utiliser ces astuces mentionnées sur ce site http://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php .
C'est très utile et facile à comprendre. Tout ce dont vous avez besoin pour créer
Voici votre violon js édité pour démonstration.
la source
Découvrez cette solution ... fonctionne pour moi >> https://jsfiddle.net/y49jpdns/
la source
la source
DA a raison. Dans votre propre violon, l'iframe est en effet réactif. Vous pouvez le vérifier dans Firebug en vérifiant le dimensionnement de la boîte iframe. Mais certains éléments à l'intérieur de cette iframe ne sont pas réactifs, donc ils "ressortent" lorsque la taille de la fenêtre est petite. Par exemple, sa
div#products-post-wrapper
largeur est de 8800 px.la source
Les iFrames PEUVENT être ENTIÈREMENT réactives tout en conservant leur rapport hauteur / largeur avec une petite technique CSS appelée la technique du ratio intrinsèque . J'ai écrit un article de blog traitant spécifiquement de cette question: https://benmarshall.me/responsive-iframes/
Cet essentiel est:
BOOM, totalement réactif!
la source
les iframes ne peuvent pas être réactifs. Vous pouvez rendre le conteneur iFrame réactif mais pas le contenu qu'il affiche car il s'agit d'une page Web qui a sa propre hauteur et largeur définies.
L'exemple de lien violon fonctionne car il affiche un lien vidéo YouTube intégré dont la taille n'a pas été déclarée.
la source
Simple, avec CSS:
Veuillez noter : mais cela ne rendra pas le contenu à l'intérieur réactif!
2ème EDIT:: Il existe deux types d'iframes réactifs, en fonction de leur contenu interne:
celui qui est lorsque l'intérieur de l'iframe ne contient qu'une vidéo ou une image ou plusieurs positionnés verticalement, pour lesquels les deux lignes de code CSS ci-dessus sont presque complètement suffisantes et le rapport hauteur / largeur a un sens ...
et l'autre est le:
Contact / formulaire d' inscription type de contenu , où non le rapport d'aspect ne nous devons garder, mais pour empêcher la barre de défilement d'apparaître, et le contenu sous-écoulement du récipient. Sur mobile, vous ne voyez pas la barre de défilement, vous faites simplement défiler jusqu'à ce que vous voyiez le contenu (de l'iframe). Bien sûr, vous lui donnez au moins une sorte de
height
, pour que la hauteur du contenu s'adapte à l'espace vertical se produisant sur un écran plus étroit - avec des requêtes multimédias, comme, par exemple:la source
J'ai remarqué que le message de leowebdev semblait fonctionner de mon côté, cependant, il a éliminé deux éléments du site que j'essaie de créer: le défilement et le pied de page.
Le défilement que j'ai récupéré en ajoutant un
scrolling="yes"
Au code d'intégration iframe.Je ne sais pas si le pied de page est automatiquement supprimé en raison de la réactivité ou non, mais j'espère que quelqu'un d'autre connaîtra cette réponse.
la source
Supprimer la hauteur et la largeur de l'iframe spécifiées en pixels et utiliser le pourcentage
la source
la source
cela m'a résolu en ajustant le code de @Connor Cushion Mulhall en
la source
En raison des contraintes de sécurité du navigateur, vous devrez inclure le fichier Javascript à la fois dans la page «parent», ainsi que dans la page en cours d'intégration via un iframe («enfant»).
Dans la version actuelle, la page parent doit inclure la dernière version de jQuery. Il n'y a aucune dépendance sur jQuery pour la fonctionnalité de page enfant. Dans les versions futures, nous aimerions également supprimer la dépendance à jQuery pour le parent.
Remarque: le paramètre «xdomain» dans l'appel de la fonction makeResponsive () est facultatif.
Exemple de code<!-- 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>
la source
Avec le balisage suivant:
Le CSS suivant rend la vidéo pleine largeur et 16: 9:
la source
Je cherche plus sur ce sujet et j'obtiens enfin une bonne réponse. Vous pouvez essayer comme ceci :
la source
La meilleure solution pour rendre un "iframe" réactif et adapté à tous les écrans de l'appareil, il suffit d'appliquer ce code (fonctionne parfaitement avec les sites de jeux):
Si vous recherchez un conteneur de jeux réactif adapté à tous les appareils, appliquez ce code qui utilise des requêtes CSS @media avancées.
la source
IFrame entièrement réactif pour les situations où le rapport hauteur / largeur est inconnu et le contenu de l'iFrame est entièrement réactif.
Aucune des solutions ci-dessus n'a fonctionné pour mon besoin, qui était de créer un iFrame entièrement réactif contenant un contenu dynamique entièrement réactif. Le maintien de tout type de rapport hauteur / largeur n'était pas une option.
Code:
J'ai également créé un délai d'attente pour que lors du redimensionnement, la fonction ne soit pas appelée un million de fois.
la source
la source
Consultez ce code complet. vous pouvez utiliser les conteneurs dans des pourcentages comme le code ci-dessous:
Consultez cette page de démonstration.
la source
Cette solution a fonctionné pour moi. Et j'ai trouvé cela plus facile. https://jameshfisher.com/2017/08/30/how-do-i-make-a-full-width-iframe/
la source