该页面包含两个按钮,一个来自Twitter,另一个来自Facebook。
我在Firefox 3.5.15中观察到的情况是:
- 当页面正在加载时,按钮更或多或少地对齐(我的意思是它们的底边)。
- 当页面加载完成后,Facebook按钮向下移动了几个像素,因此它的底部比Twitter按钮的底部更低。
- 如果我重新加载页面,按钮再次对齐,并且即使在页面加载完成后也保持这种状态。
有人能否解释一下发生了什么以及如何解决?
我通过添加vertical-align:top来解决了这个问题(当时我正在使用他们新的HTML5标记)。现在我的Facebook按钮代码看起来像这样:
<script>(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));</script>
<div class="fb-like" data-send="false" data-layout="button_count" data-width="100" data- show-faces="false" style="vertical-align:top;zoom:1;*display:inline"> </div>
我还得加上zoom:1和*display:inline的IE7 hack才能让按钮并排显示。
找到了将其向下推的样式..
如果您使用FireBug并向下滚动到FB按钮中的iframe。
这个CSS样式
.fb_iframe_widget iframe
这个元素是否存在
vertical-align: text-bottom;
那就是将它往下推的人。
你可以使用以下选择器和 !important 来覆盖 CSS 样式
.twitter-share-button[style] { vertical-align: text-bottom !important; }
.twitter-share-button
类中删除text-bottom
声明,它们就可以再次完美地对齐。 - indextwo我只是将所有图标放在一个div中,然后设置该div的行高,以使它们都对齐(因为它们的高度相同,有些与顶部对齐,有些与底部对齐)
<div class="product-social-links">
<a href="//www.pinterest.com/pin/create/but [...] >
<img src="//assets.pinterest.com/images/pidgets/pinit_fg_en_rect_gray_20.png" />
</a>
<div class="fb-like" data-href="@Request.Url.AbsoluteUri" [...] ></div>
<a href="https://twitter.com/share" class="twitter-share-button" [...] >Tweet</a>
</div>
然后就是CSS
#product-details-page .product-social-links {
line-height: 10px;
}
style
属性中添加position: relative; top: 4px;
来解决了这个问题。<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.example.com&layout=box_count&show_faces=true&width=110&action=recommend&colorscheme=light&height=65" scrolling="no" frameborder="0" style="position: relative; top: 4px; border:none; overflow:hidden; width:110px; height:65px;" allowTransparency="true"></iframe>
今天看起来至少,问题似乎源于javascript在.fb-share-button <div>
中生成的<span>
标签的奇怪对齐。这是我的解决方法:
.fb-share-button span {
top: -6px;
}
.twitter-share-button {
position:relative;
top:6px;
}
Twitter和Facebook按钮可以垂直对齐固定
vertical-align: top !important;
这个方法对我来说非常有效:
.twitter-share-button[style] { vertical-align: middle !important; }
iframe { float: left; padding-right: 10px; }
编辑:如果您想要将它们居中,只需将它们包装在一个div中(它们已经被包装了),为该div添加类或ID。例如,我们给它一个名为twfb
的类,现在在CSS中声明宽度和自动边距如下:
.twfb { width: 120px; margin: 0 auto; }
编辑2:要从Facebook中删除大的边距,只需将以下内容添加到您的CSS中:
.fb_edge_widget_with_comment { margin-left: -26ppx; }
那样它们应该能很好地对齐。div
中,您的解决方案可以适应这种情况吗? - Roman Cheplyaka我无法告诉你里面发生了什么,也不想去想 < fb:headache >
在那里做了什么,但是你应该可以通过将 Twitter 按钮的 iframe 向左浮动并添加一些 margin-right 来解决此问题,以恢复原始外观。
iframe.twitter-share-button { float: left; margin-right: 4px; }
这有点hackish,但应该可以。
更新
.fb_iframe_widget { display: block !important; }
// leave important away if possible!
// change main.css / line 41:
div.text {
clear: left;
margin: 0 auto;
padding: 35pt 5pt 15pt;
width: 40em;
}
div
中,您的解决方案可以适应这种情况吗? - Roman Cheplyakamargin: 0 auto
将这个 div 在其父 div 中居中。 - polarblau