2013-10-17 2 views
7

내 단락의 높이/줄 높이가 50px이고 텍스트가 가운데에 맞춰진 text-align: center입니다. 그러나 p : before는 높이/줄 높이가 증가하여 텍스트가 부딪치게됩니다. 나는 p와 p를 모두 수직으로 중심에두기를 원한다. line-height이 상속되고 있기 때문에CSS :: before pseudo-element line-height?

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; 
} 

텍스트 길이가 너무 차이 나는 그냥 아이콘 position: absolute를 사용할 수 있다고 생각하지 않습니다 ... 이런 일이 발생

+0

흥미로운 질문입니다. 길이가 다른 것은 무엇입니까? 마우스 오버시 텍스트 또는 마우스 오버하기 전에 실제 텍스트? –

+0

나는 위치를 사용할 수 없다는 말을했다. 텍스트는 항상 동일하지 않을 것이기 때문에 절대적인 아이콘이다. 텍스트 바로 옆에 아이콘이 필요하기 때문이다. – Sunny

+0

이 피들을 확인해보십시오. http://jsfiddle.net/MMAUy/1/ 높이를 제거했습니다. 의사 요소가 상자에 약간의 높이를 더하는 것처럼 보입니다 ... 어떤 아이디어입니까? – Sunny

답변

11

이유는있다 :before 요소이며 inline-block 요소입니다.

:before 콘텐츠를 플로팅하여이 문제를 해결할 수 있습니다. 흐름에서 제거하여 line-height의 영향을받지 않습니다.

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

플로트와 좋은 아이디어. 마크 업을 추가하지 않고도이 작업을 수행 할 수있는 방법이 있는지 궁금합니다. – Sunny