2011-08-08 4 views
19

나는 다음과 같습니다 display : table-cell을 사용할 수 있고 너비/높이가 고정되어 있습니까?

CSS

:

.photo { 
    overflow: hidden; 
    display: table-cell; 
    vertical-align: middle; 
    text-align: center; 
    width: 100px; 
    height: 100px; 
} 

HAML

.photo 
    %img{:src => my_url} 

가 jsFiddle here를 참조하십시오. 내가 시연했던 이미지는 150x80 픽셀입니다.

.photo div 안에 이미지를 표시하고 초과하는 부분을 잘라 내야합니다. 이미지는 수직 및 수평 가운데에 정렬해야합니다. 그러나 display:table-cell.photo div에서 너비와 높이 설정을 무시합니다. 이 문제를 어떻게 해결할 수 있습니까?

+1

당신이 이미지에게'배경 - image'를 만들 수있는과에 넣어 오프셋 조정해야 바로 그 장소? –

+0

문제는 이미지가 다양한 크기로 제공된다는 것입니다. – CodeWombat

+0

.photo 컨테이너가 확장 될 최대 높이/너비는 얼마입니까? 또는 치수를 100x100으로 엄격하게 유지 하시겠습니까? – Dan

답변

21

table-cell은 수직 정렬을위한 유일한 솔루션이 아닙니다.

.photo { 
    overflow: hidden; 
    background: #c0c0c0; 
    display:inline-block; /* or float:left; */ 
    text-align: center; 
    width: 100px; 
    height: 100px; 
    line-height:97px; 
} 
.photo img { 
    vertical-align:middle; 
    max-width:100%; 
    max-height:100%; 
} 
+1

고마워, 나는 새로운 것을 배웠다. 선생님 : – CodeWombat

+0

더 배우고 싶다면 ^^. http://www.w3.org/TR/CSS2/box.html – MatTheCat

+1

아래쪽 접근 방식은'.photo'에서 고정 된 높이와 너비가 필요하다는 것입니다. –

1

내부에 넣는다면 div이 효과가있는 것 같습니다. 왜 display:table-cell이 필요한지 잘 모르시겠습니까? 또한

http://jsfiddle.net/locrizak/5tawU/

, 당신은 단지 이미지에 폭을 넣어 간주 있나요? 이렇게하면 이미지의 높이도 그에 맞게 조정됩니다.

+3

디스플레이가 필요합니다 : 수직 정렬을위한 테이블 - 셀 : 작동 중간. – CodeWombat

6

당신은 display: table-cell를 사용할 수 있지만 부모는 display: table-row이 있어야하고 행의 부모가 display: table;

관련 문제