2014-10-25 2 views
4

몇 가지 기술을 시도했지만 지금까지는 절대 중심의 구에 텍스트를 가운데 맞추지 않습니다. 구의 크기는 알려져 있지만 텍스트의 길이는 알 수 없습니다. 여기에 수직 정렬이 결여 된 예는 다음과 같습니다절대 중심의 구면에 수직 중심의 텍스트

http://jsfiddle.net/eevw3oes/

CSS :

div 
{ 
    position: absolute; 
    border-radius: 50%; 
    top: 50px; 
    width: 100px; 
    height: 100px; 
    background: yellow; 
    overflow: hidden; 
    vertical-align: middle; 
    text-align: center; 
} 
+1

그것은 절대적으로 CSS를 수행 할 수 있습니다. – jacob

답변

3

인 flexbox : http://jsfiddle.net/eevw3oes/2/

div { 
    align-items: center; 
    display: flex; 
    … 
} 

이도 더 DOM을 추가하고 기존의 CSS를 사용하여 수행 할 수 있습니다. vertical-align: middle을 사용하려고하지만 블록 요소 (인라인 블록 및 표 셀에만 해당)에서 작동하지 않습니다.

+0

@no_gravity 내 대답을 참조하십시오. – Pointy

1

난 당신이 Fiddle를 참조 width

line-height: 100px; 

와 같은 값으로 line-height을 추가 할 수 있다고 생각

누군가 이미 Stackoverflow에 비슷한 문제가있었습니다. 구조에

+1

그 해결책의 문제점은 텍스트 행 하나만 맞출 수 있다는 것입니다. – Pownyan

+0

텍스트가 해당 바이올린을 감싸지 않습니다. 나는 텍스트를 감싸고 싶다. –

2

인 flexbox가 변환됩니다 때문에 작동하고, 다음과 같습니다

<div class=circle style="left: 50px;"> 
    <div class=text> 
    I'd like to be centered. 
    </div> 
</div> 

<div class=circle style="left: 200px;"> 
    <div class=text> 
    I would like also like to be centerd. Even though I have long text. I would like to be centerd horizontally and vertically. Is that possible. Oh I wish it would work. 
    </div> 
</div> 

나는 텍스트 내부 <div> 요소를 추가했습니다. CSS는이 :

.circle { 
    position: absolute; 
    border-radius: 50%; 
    top: 50px; 
    width: 100px; 
    height: 100px; 
    background: yellow; 
    overflow: hidden; 
    padding: 20px; 
} 

div.text { 
    position: absolute; 
    top: 50%; left: 50%; 
    transform: translate(-50%, -50%); 
    text-align: center; 
    height: auto; 
} 

CodePen.

+0

정말 대단해! 해결책으로 2 가지 답변을 투표 할 수 있다면이 투표를해도됩니다. –

+0

이것은 flexbox가 적절하지 않은 많은 상황에 유용합니다. 그러나 이것은 렌더링하는 것이 더 비쌉니다. 또한 CSS 애니메이션/전환을 시도하면 '변형'은 여러 가지 기능 (크기 조정, 병합 등)을 허용하며 순서가 중요하므로이를 조작하는 것은 어렵습니다. – jacob

+0

@jacob 비용이 많이 드는 것 같아요.하지만 얼마나 많은 요소를 수직 중심으로 배치하려고합니까? 300 또는 5000 또는 무엇이든간에 그렇다면 성능은 생각할만한 가치가 있습니다. 나는 많은 디자인을 위해 그것이 하나 또는 두 개의 요소라고 생각합니다. – Pointy