Czytałem ten post zatytułowany „Czy możesz sprawić, by ramka iFrame reagowała?” I jeden z komentarzy / odpowiedzi doprowadził mnie do tego pliku jfiddle.
Ale kiedy próbowałem zaimplementować HTML i CSS do swoich potrzeb, nie miałem takich samych wyników / sukcesu. Stworzyłem własne skrzypce JS, więc mogłem pokazać, jak to nie działa tak samo dla mnie. Jestem pewien, że ma to coś wspólnego z typem iFrame, którego używam (np. Obrazy produktów mogą też wymagać responsywności, czy coś?)
Moim głównym zmartwieniem jest to, że kiedy czytelnicy mojego bloga odwiedzają mój blog na swoim iPhonie, nie chcę, aby wszystko miało szerokość x (100% dla całej mojej zawartości), a wtedy iFrame źle się zachowuje i jest jedynym elementem szerszym (i dlatego się trzyma poza wszystkie inne treści - czy to ma sens ??)
Zresztą, czy ktoś wie, dlaczego to nie działa? Dziękuję Ci.
oto kod HTML i CSS MOJEGO JSFIDDLE (jeśli nie chcesz klikać linku):
<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>
a oto towarzyszący CSS:
.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%;
}
źródło
Odpowiedzi:
Przedstawiam wam rozwiązanie Incredible Singing Cat =)
jsFiddle: http://jsfiddle.net/omarjuvera/8zkunqxy/2/
Gdy przesuniesz pasek okna, zobaczysz iframe do elastycznej zmiany rozmiaru
Alternatywnie możesz również użyć techniki wewnętrznego współczynnika - to tylko alternatywna opcja tego samego rozwiązania powyżej (pomidor, pomidor)
źródło
Spróbuj użyć tego kodu, aby był responsywny
źródło
Znalazłem rozwiązanie od Dave'a Ruperta / Chrisa Coyiera. Chciałem jednak udostępnić zwój, więc wymyśliłem to:
// HTML
// CSS
źródło
Możesz użyć tych sztuczek, o których mowa w tej witrynie http://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php .
Jest to bardzo przydatne i łatwe do zrozumienia. Wszystko, czego potrzebujesz do tworzenia
Oto twoje edytowane skrzypce js do demonstracji.
źródło
sprawdź to rozwiązanie ... działa dla mnie >> https://jsfiddle.net/y49jpdns/
źródło
źródło
DA ma rację. Jeśli masz własne skrzypce, iframe rzeczywiście reaguje. Możesz to sprawdzić w programie firebug, sprawdzając rozmiar ramki iframe. Jednak niektóre elementy wewnątrz tego elementu iframe nie są responsywne, więc „wystają”, gdy rozmiar okna jest mały. Na przykład
div#products-post-wrapper
szerokość 8800px.źródło
Ramki iFrame MOGĄ W PEŁNI reagować, zachowując proporcje dzięki niewielkiej technice CSS zwanej techniką Intrinsic Ratio . Napisałem post na blogu odnoszący się konkretnie do tego pytania: https://benmarshall.me/responsive-iframes/
Oto sedno:
BOOM, w pełni responsywny!
źródło
ramki iframe nie mogą być responsywne. Możesz sprawić, by kontener iframe był responsywny, ale nie wyświetlaną zawartość, ponieważ jest to strona internetowa, która ma własną ustawioną wysokość i szerokość.
Przykładowy link do skrzypiec działa, ponieważ wyświetla osadzony link do filmu z YouTube, który nie ma zadeklarowanego rozmiaru.
źródło
Proste, z CSS:
Uwaga : ale nie spowoduje to, że zawartość w nim będzie responsywna!
2. EDYCJA:: Istnieją dwa typy responsywnych ramek iframe, w zależności od ich wewnętrznej zawartości:
który jest, gdy wewnątrz iframe zawiera tylko do filmów lub e obraz lub wiele pionowo, dla których powyższe dwóch wierszy kodu CSS jest niemal całkowicie wystarczy, a proporcje ma sens ...
a drugi to:
kontakt / formularz rejestracyjny rodzaj treści , gdzie nie musimy zachować proporcji, ale aby zapobiec pojawianiu się paska przewijania, a treści spływającej z kontenera. Na telefonie komórkowym nie widzisz paska przewijania, po prostu przewijasz, aż zobaczysz zawartość (elementu iframe). Oczywiście dajesz mu przynajmniej jakiś rodzaj
height
, aby wysokość treści dostosowywała się do pionowej przestrzeni występującej na węższym ekranie - z zapytaniami o media, takimi jak na przykład:źródło
Zauważyłem, że post Leowebdev wydawał się działać po mojej stronie, jednak usunął dwa elementy strony, które próbuję zrobić: przewijanie i stopkę.
Przewijanie wróciłem, dodając
scrolling="yes"
Do kodu osadzania iframe.Nie jestem pewien, czy stopka jest automatycznie odrzucana z powodu reakcji, czy nie, ale mam nadzieję, że ktoś inny zna tę odpowiedź.
źródło
Usuń wysokość i szerokość ramki iframe określoną w pikselach i użyj wartości procentowej
źródło
źródło
rozwiązało mnie to, dostosowując kod z @Connor Cushion Mulhall przez
źródło
Ze względu na ograniczenia dotyczące bezpieczeństwa przeglądarki, będziesz musiał dołączyć plik Javascript zarówno na stronie „nadrzędnej”, jak i na stronie osadzanej za pomocą elementu iframe („podrzędnego”).
W obecnej wersji strona nadrzędna musi zawierać najnowszą wersję jQuery. Nie ma zależności od jQuery dla funkcji strony podrzędnej. W przyszłych wersjach chcielibyśmy usunąć zależność od jQuery również dla rodzica.
Uwaga: parametr „xdomain” w wywołaniu funkcji makeResponsive () jest opcjonalny.
Przykład kodu<!-- 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>
źródło
Z następującymi znacznikami:
Poniższy kod CSS sprawia, że wideo ma pełną szerokość i 16: 9:
źródło
Szukam więcej na ten temat i wreszcie otrzymuję miłą odpowiedź. Można spróbować jak to :
źródło
Najlepszym rozwiązaniem, aby element iframe był responsywny i pasował do wszystkich ekranów urządzeń, wystarczy zastosować ten kod (doskonale współpracuje z witrynami z grami):
Jeśli szukasz responsywnego kontenera gier pasującego do wszystkich urządzeń, zastosuj ten kod, który wykorzystuje zaawansowane zapytania CSS @media.
źródło
W pełni responsywna iFrame w sytuacjach, gdy współczynnik proporcji jest nieznany, a zawartość iFrame jest w pełni responsywna.
Żadne z powyższych rozwiązań nie spełniło mojej potrzeby, a mianowicie stworzenia w pełni responsywnej ramki iFrame, która zawierałaby w pełni responsywną zawartość dynamiczną. Utrzymanie jakiegokolwiek współczynnika kształtu nie wchodziło w grę.
Kod:
Utworzyłem również limit czasu, aby przy zmianie rozmiaru funkcja nie była wywoływana milion razy.
źródło
źródło
Sprawdź ten pełny kod. możesz używać kontenerów w procentach jak poniżej kod:
Sprawdź tę stronę demonstracyjną.
źródło
To rozwiązanie zadziałało dla mnie. I było to łatwiejsze. https://jameshfisher.com/2017/08/30/how-do-i-make-a-full-width-iframe/
źródło