我使用方法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