【问题标题】:facebook like button: responsive widthfacebook喜欢按钮:响应宽度
【发布时间】:2013-12-07 21:23:08
【问题描述】:

对于 facebook like 按钮,我需要能够在桌面分辨率(539 像素)上保持默认宽度,并在屏幕分辨率低于 640 像素(移动设备)时将宽度更改为 100%。这不起作用,因为类似 fb 的 div 依赖于一个名为“data-width”的属性,该属性在 src html 中设置远程动态加载的 iframe 宽度和子元素宽度。到目前为止,我已经尝试过:

<style>
@media only screen and (max-width: 640px) {
    div.fb-like {width:100% !important}
}
@media only screen and (min-width: 960px) {
    div.fb-like {width:539px !important}
}
</style>

<div class="fb-like" data-href="https://www.facebook.com/myFacebook" data-send="true" data-show-faces="true" data-font="lucida grande" data-colorscheme="dark"></div>

当我的屏幕分辨率或移动设备较低时,如何更改“数据宽度”值?

作为临时措施,我做了以下措施来防止点赞按钮破坏移动设备上的布局:

@media only screen and (max-width: 640px) {
    div.fb-like {width:100% !important; overflow-x:auto}
}

这并不理想,因为用户必须向左滑动才能查看任何溢出,但在其他人提出可行的建议之前,这是我能想到的唯一解决方案。附上截图(iOS 7 iPhone & Android 4.3.1)...

【问题讨论】:

  • 您可以尝试检测视口的宽度并使用 jQuery 更改数据宽度的属性。这是一个选择吗?

标签: css facebook responsive-design facebook-likebox


【解决方案1】:

尝试将.fb-like 类放入带有style="width:100%; 的div 包装器中。现在您可以添加类似$(window).bind("load resize", function(){} 的内容来获取浏览器的实际宽度并调整like 按钮的大小。

编辑:

<script>
    var container_width_current = $('#WRAPPER-DIV').width();

    $(window).bind("load resize", function(){    
         var container_width_new = $('#WRAPPER-DIV').width();

         if (container_width_new != container_width_current) {
             container_width_current = container_width_new;

             $('#container').html('<div class="fb-like-box" ' +
             'data-href="https://www.facebook.com/adobegocreate" ' +
             'data-width="' + container_width_new + '" data-height="730" data-show-faces="false" ' +
             'data-stream="true" data-header="true"></div>');
             FB.XFBML.parse();
         }
    }); 
</script>

编辑#2:

这是一种快速的 CSS 方法:

#u_0_0 {
    width: 100% !important;
}
.fb-like.fb_edge_widget_with_comment.fb_iframe_widget, .fb-like.fb_edge_widget_with_comment.fb_iframe_widget > span, .fb-like.fb_edge_widget_with_comment.fb_iframe_widget > span > iframe {
    width: 100% !important;
    height: auto !important;
}

【讨论】:

  • Fex,看起来这可能是一个很好的解决方案。但是,我不太清楚 - 您提供的脚本中的 $('#container').html' 是什么?
  • 嗨,Chris,“container”是名为“#WRAPPER-DIV”的包装器/容器的 DIV ID。我在第一点将“#container”作为包装器的名称。您的 html 代码可能如下所示:&lt;div id="container" style="width:100%"&gt; &lt;div class="fb-like" data-href="https://www.facebook.com/myFacebook" data-send="true" data-show-faces="true" data-font="lucida grande" data-colorscheme="dark"&gt;&lt;/div&gt; &lt;/div&gt;
  • 这似乎对我不起作用。我在这里添加了一个测试页面:[link]atlasdev.passportpp.com/fbtest.html你能看看我做错了什么吗?
  • 嗨,克里斯,试试我上面发布的 CSS 方法。
  • 如果您的小部件没有启用 cmets,css 方法将无法正常工作,因为选择器将不存在。我建议删除 .fb_edge_widget_with_comment 以减少限制。另外,我根本不喜欢这种解决方案,因为这只是将文本行剪切到没有足够空间的地方...
【解决方案2】:

尝试使用 facebook like button 的 Iframe 代码而不是 HTML5。

看看这个:

<iframe src="//www.facebook.com/plugins/like.php?href=
https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&amp;
width=225&amp;layout=standard&amp;action=like&amp;show_faces=false&amp;
share=true&amp;height=35&amp;appId=161427297222786" 
scrolling="no" frameborder="0" 
style="border:none; overflow:hidden; width:100%; height:50px;" 
allowTransparency="true"></iframe>

我已将内联 CSS 宽度更改为 100%,将高度更改为 50px。 URL 中的宽度是 225,这是 facebook like 的最小值。

【讨论】:

  • 谢谢,@asachanfbd 在 Fex 上面回答之前没有看到您的评论。不过感谢您的额外建议!
  • @ChrisJM 您应该将一个答案标记为正确,以供其他用户依赖。
猜你喜欢
  • 2012-07-27
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多