참고 : 이것이 허용되는 답변이지만 아래 답변 이 더 정확하며 배경 이미지 사용 옵션이있는 경우 현재 모든 브라우저에서 지원됩니다.
아니요, 양방향으로이 작업을 수행하는 CSS 유일한 방법은 없습니다. 추가 할 수 있습니다
.fillwidth {
min-width: 100%;
height: auto;
}
요소가 항상 너비를 100 %로 유지하고 높이를 가로 세로 비율 또는 그 반대로 자동으로 조정하려면 :
.fillheight {
min-height: 100%;
width: auto;
}
항상 최대 높이 및 상대 너비로 조정합니다. 두 가지를 모두 수행하려면 가로 세로 비율이 컨테이너보다 높거나 낮은 지 확인해야하며 CSS는이를 수행 할 수 없습니다.
그 이유는 CSS가 페이지가 어떻게 생겼는지 알지 못하기 때문입니다. 사전에 규칙을 설정하지만 그 후에야 요소가 렌더링되고 처리중인 크기와 비율을 정확히 알 수 있습니다. 이를 감지하는 유일한 방법은 JavaScript를 사용하는 것입니다.
JS 솔루션을 찾고 있지는 않지만 누군가 필요할 경우 어쨌든 추가하겠습니다. JavaScript로이를 처리하는 가장 쉬운 방법은 비율의 차이에 따라 클래스를 추가하는 것입니다. 상자의 너비 대 높이 비율이 이미지의 비율보다 크면 "fillwidth"클래스를 추가하고 그렇지 않으면 "fillheight"클래스를 추가하십시오.
$('div').each(function() {
var fillClass = ($(this).height() > $(this).width())
? 'fillheight'
: 'fillwidth';
$(this).find('img').addClass(fillClass);
});
.fillwidth {
width: 100%;
height: auto;
}
.fillheight {
height: 100%;
width: auto;
}
div {
border: 1px solid black;
overflow: hidden;
}
.tower {
width: 100px;
height: 200px;
}
.trailer {
width: 200px;
height: 100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="tower">
<img src="http://placekitten.com/150/150" />
</div>
<div class="trailer">
<img src="http://placekitten.com/150/150" />
</div>