2012-05-18 18 views
65

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

119

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; 
} 
+2

ł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

+1

Należy pamiętać, że zdjęcia ściany mają pewien rozmiar, co powoduje, że rozmiar takiego pudełka jest minimalny. – Tillito

+0

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? –

27

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.

+0

Dobrze mi działało dzięki @sovarn próbował wcześniej napisać jockera. – tristanbailey

+1

Szczerze .. Wielkie dzięki. Uściskałbym cię, gdybym mógł! Dobra poprawka do problemu, który naprawdę mnie zaniepokoił. –

+0

działa dobrze, co dokładnie robi "element iframe [styl]"? – wutzebaer

26

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; 
} 
+0

Dzięki, działa dla mnie. – user11153

+0

Nie jestem pewien, dlaczego używałbyś iFrame do osadzenia w LikeBox? .fb-like-box {szerokość: 100%! important;} to wszystko, czego potrzebowałem.

wewnątrz
Bojangles

0

Ż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.)

+0

Skąd można wygenerować ten fragment kodu lub jak powinna wyglądać pełna wartość źródłowa? – isherwood

3

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!

+0

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ę. –

0

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;}` 
6

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.

+1

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) –

0

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); 
Powiązane problemy