36

是否可以使 Facebook 的评论小部件具有流动宽度?他们的文档显示了fb:commentsxfbml 或 iframe 的宽度字段,指定为:

  • width - 插件的宽度(以像素为单位)。建议的最小宽度:400 像素。

所以也许不可能...

4

19 回答 19

52

艾伦,您的解决方案正在运行,但看起来 facebook 更新了他们的插件并打破了风格。我使用通用选择器让它再次工作:

.fb-comments, .fb-comments * {
    width:100% !important;
}
于 2012-04-18T15:29:04.160 回答
42

我找到了使用 css 的解决方案。灵感来自这篇文章 http://css-tricks.com/2708-override-inline-styles-with-css/

.fb-comments, .fb-comments iframe[style] {width: 100% !important;}
于 2011-10-17T11:05:28.373 回答
31

可能是 FB 的下一个变化,这一次效果更好:


.fb_iframe_widget,
.fb_iframe_widget span,
.fb_iframe_widget iframe[style]  {width: 100% !important;}
于 2012-10-31T17:03:28.473 回答
16

截至 2014 年 3 月,没有任何 CSS 解决方案对我有用。似乎 Facebook 已将插件更改为现在在 iFrame 内的容器上设置宽度,您无法用 CSS 覆盖该宽度。

经过一番挖掘,我注意到评论的宽度实际上是由 iframe src 的最后一个参数控制的width=XXX。考虑到这一点,这就是我解决它的方法:

// ON PAGE LOAD
setTimeout(function(){
  resizeFacebookComments();
}, 1000);

// ON PAGE RESIZE
$(window).on('resize', function(){
  resizeFacebookComments();
});

function resizeFacebookComments(){
  var src   = $('.fb-comments iframe').attr('src').split('width='),
      width = $('#container').width();

  $('.fb-comments iframe').attr('src', src[0] + 'width=' + width);
}

#container是您希望评论插件拉伸以适应的容器宽度。将其更改为您需要的任何内容,此代码应该适合您。

我正在使用超时,因为加载 iframe 后我无法启动它。对此的任何帮助将不胜感激,但超时可以完成工作。

编辑:此解决方案导致后退按钮中断。我现在正在尝试这个解决方案,它似乎更好:https ://stackoverflow.com/a/22257586/394788

于 2014-03-05T13:54:23.553 回答
16

我想我有一个解决方案,可以从 3 月 5 日起对 Ryan 的回答有所改进。

您可以执行以下操作,而不是延迟后重新加载 Facebook iframe。

插入一个常规的 Facebook 评论标签,但在类中附加一个额外的位,这样 Facebook 就不会检测到它,但你可以。

<div class="fb-comments-unloaded" data-href="..." data-numposts="10" data-colorscheme="light"></div>

然后添加一些 JS 来挑选这个 div,用所需的宽度修改它,然后触发 Facebook 的解析器。

var foundFBComs = false;

$('.fb-comments-unloaded').each(function(){

    var $fbCom = $(this),
        contWidth = $fbCom.parent().width();

    $fbCom.attr('data-width', contWidth)
          .removeClass('fb-comments-unloaded')
          .addClass('fb-comments');

    foundFBComs = true;

});

if (foundFBComs && typeof FB !== 'undefined') {
    FB.XFBML.parse();
}
于 2014-03-11T14:33:25.227 回答
11

Facebook 已经解决了这个问题。您现在可以适当地添加data-width="100%"或设置宽度选项100%并删除任何疯狂的 js hack!

于 2014-05-16T14:12:03.237 回答
4

我通常希望避免使用通用选择器以获得更好的性能。你应该能够得到相同的结果

.fb-comments, .fb-comments span, .fb-comments iframe {width: 100% !important;}

如果您检查 facebook 选择器,可能会得到更多改进......

于 2012-05-30T11:16:39.410 回答
4

在初始化 facebook 插件之前插入此代码,您将获得流畅的 fb 评论:):):)

 $(".fb-comments").attr("data-width", $(".fb-comments").parent().width());
$(window).on('resize', function() {
resizeFacebookComments();
});

function resizeFacebookComments() {
var src = $('.fb-comments iframe').attr('src').split('width='),
    width = $(".fb-comments").parent().width();

$('.fb-comments iframe').attr('src', src[0] + 'width=' + width);
}
于 2014-03-14T14:15:42.697 回答
2

我还不能发表评论,因为我的声誉还不够高,但是截至 2014 年 12 月 21 日有一个解决方案

为了在 CSS 中工作:

.fb_iframe_widget,
.fb_iframe_widget span,
.fb_iframe_widget iframe[style]  {width: 100% !important;}

您必须在 FB 插件代码中将 data-width="" 部分设置为 100%,即

<div class="fb-comments" data-href="your site here" data-width="100%" data-numposts="5" data-colorscheme="light"></div>

流体运动的工作示例:http:www.unitedbiker.org

希望这对大家有所帮助,想法是将 iframe 样式覆盖为父元素的 100%,并将实际的 FB 插件设置为 iframe 的 100%。这是我的工作。

于 2014-12-21T20:14:29.143 回答
2

看起来 facebook 更新了他们的文档..你现在可以使用 data-width="100%" 或 width="100%"

https://developers.facebook.com/docs/plugins/comments/

于 2014-05-29T03:32:34.913 回答
1

我认为这对每个人都有效。为我工作 2013 年 12 月 26 日在http://eddie11.com/dj-eddie-talks/

#fbSEOComments, 
#fbSEOComments span,
#fbSEOComments div,
#fbSEOComments iframe,
#fbSEOComments iframe[style],
#fbSEOComments .fb_iframe_widget,
#fbSEOComments .fb_iframe_widget span,
#fbSEOComments .fb_iframe_widget iframe
{
    width: 100% !important;
}

以下内容都不适合我,但我还是把它留在那里。

.fb-comments,
.fb-comments *,
.fb-comments iframe[style],
.fb_iframe_widget,
.fb_iframe_widget span,
.fb_iframe_widget iframe,
.fb_iframe_widget iframe[style],
.fb-comments span,
.fb-comments iframe,
于 2013-12-26T18:42:13.670 回答
1

我知道这是一个老问题,但这可能对某人有所帮助。

您可以使用以下代码使您的评论流畅


.fb-comments, .fb-comments iframe[style], .fb-like-box, .fb-like-box iframe[style] {width: 100% !important;}
.fb-comments span, .fb-comments iframe span[style], .fb-like-box span, .fb-like-box iframe span[style] {width: 100% !important;}

可以查看这里的代码,因为这里的pre函数删除了一些东西。我是新来的。问候

Facebook 评论流

于 2013-12-29T22:27:04.223 回答
1

花了一些时间调查这个问题。虽然 FB 建议以像素为单位指定绝对宽度,但如果您将其设置为“100%”,它看起来就可以工作。请注意下面的数据宽度。

<div class="fb-comments" data-width="100%" data-href="http://www.sample.com/" data-numposts="5" data-colorscheme="light"></div>

是啊是啊,这很简单,没有 onresize 回调没有 iframe src 修改。

于 2014-08-04T13:56:48.187 回答
1

这对我有用,但我需要添加 span 标签才能正常工作:

.fb-comments, .fb-comments iframe[style], .fb-comments span { width: 100% !important; }
于 2013-08-30T04:11:12.947 回答
1

在努力解决这个问题很长一段时间后,我发现了一个花絮,它可以帮助您确定此页面上的哪些 CSS 技巧将有助于您的特定网站/版本/年份的 facebook 评论插件。在浏览器中查看您的网站并检查 facebook 评论插件周围的元素。你应该找到你添加的一个片段,现在由 facebook 的 javascript 小部件修饰,看起来像这样:

<fb:comments href="http://mywebpage.com" 
    fb-xfbml-state="rendered" class="fb_iframe_widget">

注意上面写着的部分:

class="<whatever class your version is using>"

这是您要使用的类 - 所以在我上面的示例中,您需要添加以下样式:

<style>
    .fb_iframe_widget,
    .fb_iframe_widget iframe[style],
    .fb_iframe_widget span[style],
    .fb_iframe_widget *  {
        width: 100% !important;
    }
</style>
于 2015-08-12T22:28:56.757 回答
0

这是唯一对我有用的东西!

$(".fb-comments").attr("data-width", $(".fb-comments").parent().width());
$(window).on('resize', function() {
resizeFacebookComments();
});

function resizeFacebookComments() {
var src = $('.fb-comments iframe').attr('src').split('width='),
width = $(".fb-comments").`enter code here`parent().width();

$('.fb-comments iframe').attr('src', src[0] + 'width=' + width);
}
于 2014-05-16T19:07:41.123 回答
0

如果您的 Facebook 评论插件的代码看起来像 (XFBML):

<fb:comments href="{URL_HERE}" numposts="5" colorscheme="light"></fb:comments>

然后下面的 CSS 应该可以完成工作:

.fb_iframe_widget, .fb_iframe_widget span, .fb_iframe_widget iframe {
     width: 100% !important;
}
于 2013-12-17T17:14:32.510 回答
0
.fb-comments, .fb-comments iframe[style],  .fb-comments > span {width: 100% !important;}
于 2013-08-21T23:52:24.970 回答
0

无需覆盖css,使用data-width="100%"

<div class="fb-comments" data-width="100%" data-href="yourURL"></div>
于 2017-02-09T09:13:08.740 回答