2013-10-17 19 views
7

Paragrafım, metni ortalayan 50 piksel ve text-align: center yükseklik/çizgi yüksekliğine sahiptir. Ancak p: önce, metnin küçülmesine neden olarak, yükseklik/çizgi yüksekliğinde artışa neden oluyor. Hem p hem p: dikey olarak ortalanmadan önce istiyorum. line-height miras ediliyor çünküCSS :: sözde eleman çizgisi yüksekliğinden önce mi?

http://jsfiddle.net/MMAUy/

<p>Hover This</p> 

p { 
    background: red; 
    text-align: center; 
    height: 50px; 
    line-height: 50px; 
    font-size: 14px; 
} 

p:hover:before { 
    content: "icon"; 
    display: inline-block; 
    margin-right: 10px; 
    font-size: 3em; 
} 

metin uzunluğu değişir kadar ben ben sadece simge için position: absolute kullanabilirsiniz sanmıyorum ... Bu durumda

+0

İlginç soru:

Güncellenen jsFiddle

. Ne uzunlukta değişir? Vurgulu metni veya vurgulu önce gerçek metni? –

+0

Sadece pozisyonu kullanamayacağımı söylüyordum: ikon için mutlak çünkü metin her zaman aynı olmayacak ve metnin hemen yanında simgeye ihtiyacım var. – Sunny

+0

Bu kulağıma bakın, http://jsfiddle.net/MMAUy/1/ Yüksekliğini kaldırdım. Sahte elemanın kutuya bir yükseklik katması gibi görünüyor ... Herhangi bir fikir mi? – Sunny

cevap

11

nedeni vardır inline-block öğesi olan :before öğesi.

Bunu, :before içeriğiyle yüzer biçimde çözebilir, böylece akıştan kaldırarak, line-height etkilemez.

jsFiddle here

HTML

<div> 
    <p>Hover This</p> 
</div> 

CSS

div { 
    background: red; 
    height: 50px; 
    line-height: 50px; 
    font-size: 14px; 
    text-align:center; 
} 

div:hover p:before { 
    content: "icon icon icon icon"; 
    margin-right: 10px; 
    font-size: 42px; 
    float:left; 
} 
p { 
    display:inline-block; 
    margin:0px; 
} 
+0

Şamandıra ile iyi fikir. Ek biçimlendirme eklemeden bunu başarmanın bir yolu var mı? – Sunny