원래 답변 :
CSS3를 선택할 준비가 되었으면 css3 translate 속성을 사용할 수 있습니다. 더 큰 것을 기준으로 크기를 조정하십시오. 높이가 크고 너비가 컨테이너보다 작 으면 너비가 100 %로 늘어나고 높이가 양쪽에서 잘립니다. 더 큰 너비도 마찬가지입니다.
당신의 필요, HTML :
<div class="img-wrap">
<img src="http://lorempixel.com/300/160/nature/" />
</div>
<div class="img-wrap">
<img src="http://lorempixel.com/300/200/nature/" />
</div>
<div class="img-wrap">
<img src="http://lorempixel.com/200/300/nature/" />
</div>
그리고 CSS :
.img-wrap {
width: 200px;
height: 150px;
position: relative;
display: inline-block;
overflow: hidden;
margin: 0;
}
div > img {
display: block;
position: absolute;
top: 50%;
left: 50%;
min-height: 100%;
min-width: 100%;
transform: translate(-50%, -50%);
}
짜잔! 근무 : http://jsfiddle.net/shekhardesigner/aYrhG/
설명
DIV가 relative
위치 로 설정됩니다 . 이는 모든 자식 요소가이 DIV가 시작되는 시작 좌표 (원점)를 가져옴을 의미합니다.
이미지는 BLOCK 요소로 설정되며, min-width/height
둘 다 100 %로 설정되면 크기에 관계없이 이미지의 크기가 부모의 최소 100 %가되도록 크기를 조정하는 것을 의미합니다. min
열쇠입니다. min-height로 이미지 높이가 부모의 높이를 초과하면 문제 없습니다. 최소 너비인지 확인하고 최소 높이를 부모의 100 %로 설정하려고합니다. 둘 다 그 반대입니다. 이렇게하면 div 주변에 간격이 없지만 이미지는 항상 약간 더 크고overflow:hidden;
이제이 위치는 및로 image
설정됩니다 . DIV에서 원점을 가져 오도록 이미지를 위쪽과 왼쪽에서 50 % 밀어 넣는 것을 의미합니다. 왼쪽 / 상단 단위는 상위 단위에서 측정됩니다.absolute
left:50%
top:50%
마법의 순간 :
transform: translate(-50%, -50%);
이제 translate
CSS3 transform
속성 의이 기능은 문제의 요소를 이동 / 위치 변경합니다. 이 속성은 적용된 요소를 처리하므로 값 (x, y) 또는 (-50 %, -50 %)는 이미지 크기의 50 %만큼 음수를 왼쪽으로 이동하고 이미지 크기의 50 %만큼 음수 상단으로 이동 함을 의미합니다. .
예 : 이미지 크기가 200px × 150px이면 transform:translate(-50%, -50%)
translate (-100px, -75px)로 계산됩니다. % 단위는 다양한 이미지 크기를 가질 때 도움이됩니다.
이것은 이미지와 부모 DIV의 중심을 파악하고 일치시키는 까다로운 방법입니다.
설명하는 데 시간이 너무 오래 걸린 것에 대해 사과드립니다!
더 많은 것을 읽을 수있는 리소스 :
background-size: cover;
?