我使用方法Chris Coyier suggested in CSS-tricks将一些内容(两种方式)集中在容器元素中。为了兼容性,我使用了语义方法,而不是文章中使用的:before
伪元素。出于某种原因,Firefox(针对Mac的v.19进行了测试)失败,我无法弄清楚正确的修复方法(而Safari,Opera,IE9和Chrome都按照他们应该的方式工作)。Firefox中的元素居中(水平和垂直)失败
我可以检测浏览器并放置一些有条件的规则,但如果可能的话,我有兴趣解决这个问题。
这是我的代码the modified fiddle I created如果你想检查不同的浏览器。
CSS:
.block {
text-align: center;
background: #c0c0c0;
margin: 20px 0;
height: 300px;
}
.content-before {
content:'';
display: inline-block;
height: 100%;
vertical-align: middle;
margin-right: -0.25em; /* Adjusts for spacing */
}
.centered {
display: inline-block;
vertical-align: middle;
padding: 10px;
background: #f5f5f5;
}
HTML:
<div>
<div class="block">
<span class="content-before"></span>
<div class="centered">
<h1>Some text</h1>
<p>But he stole up to us again, and suddenly clapping
his hand on my shoulder, said—"Did ye see anything
looking like men going towards that ship a while ago?"</p>
</div>
</div>
</div>
谢谢。不幸的是,字体大小(em)的缺点适用于我的情况。然而,这个肮脏的窍门似乎是最好的办法,因为第二个解决方法是在内容的两侧都创建空的空间,当窗口被调整大小时这些空间也会发生变化。 – inhan 2013-03-18 16:03:04
事实上,CSS hacks变得非常混乱,我通常选择基于JS的方法:)当你已经有jQuery运行时,没有太多的开销。 – Terry 2013-03-18 16:09:35
哦,不,我完全忘记了内容的边距和填充:/ – inhan 2013-03-18 16:22:58