Używam Facebooka, takiego jak kod skrzynki w moim side bar, wklejając kod Facebooka w widgecie tekstowym. Mój motyw jest responsywny i chciałbym, aby pole podobne było poprawnie zmieniane. Znalazłem to tutorial, ale on mówi, że sposób, w jaki to robi, nie jest "w pełni responsywny", więc nie wiedziałem, czy jest lepszy sposób na zrobienie tego.Jak sprawić, aby Facebook Like Box reagował?
Odpowiedz
UWAGA: ta odpowiedź jest nieaktualna. Zobacz the community wiki answer below, aby uzyskać aktualne rozwiązanie.
Znalazłem GIST dzisiaj i działa idealnie: https://gist.github.com/2571173
(wiele dzięki https://gist.github.com/smeranda)
/*
Make the Facebook Like box responsive (fluid width)
https://developers.facebook.com/docs/reference/plugins/like-box/
*/
/*
This element holds injected scripts inside iframes that in
some cases may stretch layouts. So, we're just hiding it.
*/
#fb-root {
display: none;
}
/* To fill the container and nothing else */
.fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget span iframe[style] {
width: 100% !important;
}
przykład Colin mi starli się z przycisku podobnego. Więc zaadaptowałem go, by kierować tylko na Like Box.
.fb-like-box, .fb-like-box span, .fb-like-box span iframe[style] { width: 100% !important; }
Testowany w większości nowoczesnych przeglądarek.
Dobrze mi działało dzięki @sovarn próbował wcześniej napisać jockera. – tristanbailey
Szczerze .. Wielkie dzięki. Uściskałbym cię, gdybym mógł! Dobra poprawka do problemu, który naprawdę mnie zaniepokoił. –
działa dobrze, co dokładnie robi "element iframe [styl]"? – wutzebaer
UWAGA: Rozwiązanie Colina nie działało dla mnie. Facebook mógł zmienić ich znaczniki. Korzystanie z *
powinno być bardziej przyszłościowe.
Owiń jak pudełko z div:
<div id="likebox-wrapper">
<iframe src="..."></iframe> <!-- likebox code -->
</div>
i dodać to do pliku CSS:
#likebox-wrapper * {
width: 100% !important;
}
Dzięki, działa dla mnie. – user11153
Nie jestem pewien, dlaczego używałbyś iFrame do osadzenia w LikeBox? .fb-like-box {szerokość: 100%! important;} to wszystko, czego potrzebowałem.
Żadne sztuczki css pracował dla mnie (w moim przypadku fb-like pole zostało pociągnięte w prawo za pomocą "float: right"). Jednak bez żadnych dodatkowych sztuczek działała wersja kodu przycisku IFRAME. Tj:
<iframe src="//www.facebook.com/plugins/like.php?href=..."
scrolling="no" frameborder="0"
style="border:none; overflow:hidden; width:71px; height:21px;"
allowTransparency="true">
</iframe>
(Uwaga niestandardową szerokość w stylu, a nie konieczność uwzględnienia dodatkowych javascript.)
Skąd można wygenerować ten fragment kodu lub jak powinna wyglądać pełna wartość źródłowa? – isherwood
odpowiedź szukasz w czerwcu 2013 można znaleźć tutaj:
https://gist.github.com/dineshcooper/2111366
Dokonano tego za pomocą jQuery w celu przepisania wewnętrznego HTML kontenera nadrzędnego, który przechowuje widżet facebook.
Mam nadzieję, że to pomoże!
Istota nie działa już dla mnie od lipca 2014. Wygląda na to, że facebook dodał hardcoded style z 'width =" xxxpx "' wewnątrz iframe, który łamie tę metodę. –
Próbowałem to zrobić na Drupal 7 z modułem "fb_likebox" (https://drupal.org/project/fb_likebox). Aby uzyskać responsywność. Okazuje się, że musiałem napisać własną wersję modułu Contrib i rozebrać opcję ustawienia szerokości. (domyślna opcja wysokości nie miała dla mnie znaczenia). Po usunięciu szerokości dodałem <div id="likebox-wrapper">
w pliku fb_likebox.tpl.php.
Oto mój CSS to styl:
`#likebox-wrapper * {
width: 100% !important;
background: url('../images/block.png') repeat 0 0;
color: #fbfbfb;
-webkit-border-radius: 7px;
-moz-border-radius: 7px;
-o-border-radius: 7px;
border-radius: 7px;
border: 1px solid #DDD;}`
dniem 4 sierpnia 2015, native facebook like box posiada elastyczne fragment kodu dostępnego na stronie Facebook Developers.
Można wygenerować czułe Facebook LikeBox tutaj
https://developers.facebook.com/docs/plugins/page-plugin
Jest to najlepsze rozwiązanie kiedykolwiek zamiast hacking CSS.
Zaznaczając "Dostosuj do szerokości kontenera wtyczki", pole podobne zmieni tylko szerokość przy ładowaniu strony (nie poprzez zmianę rozmiaru okna przeglądarki). Aby zapobiec zniekształceniu projektu przy zmianie rozmiaru okna (lub zmianie orientacji tabletu), można również uruchomić odświeżanie lub użyć szerokości: 100%; overflow-x: hidden; maksymalna szerokość: 500 pikseli; (na otaczającym div) –
You can see facebook way to make adaptive width
stwierdza się, że:
- Wtyczka będzie określić jego szerokość na stronie obciążenia
- To nie będzie reagował na zmiany modelu skrzynki po stronie obciążenia.
Jeśli chcesz dostosować szerokość wtyczki przy zmianie rozmiaru okna, musisz ręcznie zreplikować wtyczkę.
Tak oto rozwiązanie, które działa:
HTML
<div class="fb-page">
<!-- Iframe code -->
</div>
JavaScript
(function($){
$(window).on('resize', function() {
$(".fb-page").attr("data-width", $('.fb-column').width()).attr("data-height", $('.fb-column').height());
if (typeof FB !== 'undefined') {
FB.XFBML.parse();
}
});
})(jQuery);
ładne proste rozwiązanie, ale nie ma potrzeby, aby przeglądarka uczynienia # fb-root element, a następnie ukryj go w CSS. Po prostu usuń element razem. – petermarty
Należy pamiętać, że zdjęcia ściany mają pewien rozmiar, co powoduje, że rozmiar takiego pudełka jest minimalny. – Tillito
Jedyny problem, który wciąż tu widzę, jest z iPhonem, jeśli przewijasz kanał wiadomości i ładujesz więcej postów, ładują się one znacznie i wyskakują z układu. Jakieś pomysły? –