2012-11-22 4 views
1

이미지의 옆이나 옆쪽 (왼쪽/오른쪽 또는 위쪽/아래쪽)에 텍스트를 가운데에 배치하는 것은 매우 쉽지만 이미지의 왼쪽을 따라 텍스트 텍스트를 중심에 배치하고 하단을 따라 텍스트를 가운데에 배치해야합니다.양 옆의 텍스트 가운데에 텍스트를 가운데에 맞 춥니 다. (왼쪽 및 아래) CSS 전용

몇 가지 해결책을 찾아 보았지만 각각 하나의 텍스트 또는 다른 텍스트를 수동으로 센터링해야합니다. 아래의 솔루션에서는 아래쪽에 텍스트를 수평으로 가운데에 배치하려면 텍스트의 길이가 변경되도록 패딩이 필요하기 때문에 왼쪽에 세로 센터링을 수동으로 적용하기로했습니다.

자바 스크립트는 매우 쉽습니다.

element.style.paddingTop = (Img_Height/2 - Txt_Height/2); 

그러나 나는 순수 CSS 솔루션이 없다고 생각한다.

아래에서이 코드의 동일한 효과를 얻는 더 좋은 방법이 있습니까? 여기에 직접보기 : http://jsfiddle.net/Gamil/yteBY/

<div class="Preview"> 
    <p class="Preview" style="padding-top: 54px;">120 pixels high</p> 
    <ul class="Preview"> 
     <li><img alt="big preview" src="http://placehold.it/160x120" /></li> 
     <li>160 pixels wide</li> 
    </ul> 
</div> 
<div class="Preview" style="padding-top: 30px;margin-left: 30px;"> 
    <p class="Preview" style="padding-top: 23px;">60 pixels high</p> 
    <ul class="Preview"> 
     <li><img alt="big preview" src="http://placehold.it/80x60" /></li> 
     <li>80 pixels wide</li> 
    </ul> 
</div> 

CSS :

.Preview { 
    float: left; 
} 
ul.Preview > li { 
    list-style: none; 
    text-align:center; 
} 
+2

정확히 무엇을 성취하려고하는지 명확하지 않습니다. 당신은 정교 할 수 있습니까? – mattytommo

+0

jfiddle 링크를 따라 간다면 왼쪽 텍스트의 패딩 윗부분을 하드 코딩하고 "text-align : center;"를 사용하여 확인할 수 있습니다. 바닥에. 각 div 및 단락에 올바른 픽셀을 수동으로 계산할 필요가없는 방식으로이 작업을 수행하고 싶습니다. – Gamil

답변

0

Horiztonal alignement가 수직 정렬을위한 조금 복잡합니다, 쉬운 사실이다. Here is a good article on vertical alignment

그래서 문제와 직결 여기에 첫 번째 솔루션 :이 솔루션은 CSS를 같이 완벽하지 JSBIN 내가 할 : 텍스트 가 왼쪽에서 50 %를 시작한다는 것을 의미

.textC{ 
    position:absolute; 
    top:50%; 
    left:50%; 
} 

및 상단. 당신이 정확히 원하는 것 (내가 이해 한 것으로부터)이 아닙니다.

작은 자바 스크립트를 사용하면 텍스트의 크기를 가져 와서 그림의 중앙에 정확하게 바꿀 수 있습니다. See the JSBIN solution with javascript

편집 : 여기에 새로운 솔루션은 CSS를 사용한다 : 나는

.block1{ 
    #position: absolute; 
    display: table-cell; 
    vertical-align: middle; 
    top: 50%; 
    left: 50%; 
} 

.block2{ 
    #position: relative; 
    display: block; 
    bottom: 50%; 
    right: 50%; 
    margin:auto; 
} 

는 기본적으로 위치로 #를 추가 CSS 코드의 스 니펫을 설명 fiddle

을 오브젝트의 중심을 선택 왼쪽 위 모서리 대신.

this website에 감사드립니다. 내게 당신의 문제에 대한 올바른 해결책을 암시했습니다!

+0

OP에서 제공 한 JSFiddle 링크를 따라 가면 중심에 놓으려고합니다. 안쪽이 아닌 가장자리의 텍스트. 내가 alredy 솔루션을 가지고 있지만, 그것은 유연하지 않기 때문에 수동으로 텍스트 중 하나에 패딩을 설정해야하기 때문에 그것을 좋아하지 않아. 패딩은 텍스트의 길이에 따라 변하지 않으므로 사이드 텍스트를 가운데에 맞추기로했습니다. – Gamil

+0

아, 미안하지만 그날 낮에는 바이올린에 못 갔어.하지만 기본적으로 내 자바 스크립트 솔루션의 접근 방식을 취할 수 있고 내부 대신에 _ 음의 _를 사용할 수 있습니다. 텍스트의 길이에 대한 가치가 있으면 "수동으로 설정"할 필요없이 원하는 수학을 할 수 있습니다. – leMoisela

+0

예, 자바 스크립트는 꽤 쉬울 것입니다. Image_Height/2 - text_height/2. 그러나 순수한 CSS 솔루션이 없다는 것을 믿기 어렵습니다. – Gamil

관련 문제