나는이에 대한 display
속성의 table
및 table-row
값을 사용하는 것이 좋습니다 것입니다.
image-wrapper와 text 요소는 모두 테이블 행이므로 확장하여 테이블의 전체 영역을 채 웁니다. 이미지 래퍼는 높이 100 %로 설정되어 있으므로 왼쪽 여백을 소비합니다.
이미지 요소는 이미지 래퍼 내에 중첩되어 있으며 너비/높이 100 %로 설정되어 있으므로 부모와 동일한 차원을 사용합니다. 여기
이 바이올린입니다 :
http://jsfiddle.net/8S6Kf/1/
HTML
<div class="parent">
<div class="image-wrapper">
<img class="image" src="http://placehold.it/250x250&text=2" />
</div>
<div class="text">
A line of text.
</div>
</div>
CSS
.parent {
display: table;
height: 250px;
width: 250px;
}
.image-wrapper {
display: table-row;
height: 100%;
}
.image {
width: 100%;
height: 100%;
}
.text {
display: table-row;
}
업데이트
,
FF/IE에서는 작동하지 않습니다. 이 특정 문제에 대해서는 실제 이미지를 div로 대체하고 background-image 속성을 사용할 수 있습니다. 또한 이미지를 표 셀로 만들어야합니다. 그렇지 않으면 테이블을 렌더링하지 않습니다.
다음은 이미지를 늘리지 않는 예입니다.
http://jsfiddle.net/8S6Kf/7/
HTML
<div class="image"></div>
CSS
.image {
display: table-cell;
height: 100%;
width: auto;
background-image: url(http://placehold.it/250x250&);
background-size: 100% 100%;
}
이미지의 크기를 유지하려면, 당신은 다른 방법이 배경 속성을 사용할 수 있습니다
background-size: contain;
background-repeat: no-repeat;
가장 오래된 브라우저는 무엇입니까?CSS에서 플렉스 박스 속성 (CSS가 아니라 애드온이 아닌)을 사용하면 쉽게이 작업을 수행 할 수 있지만 ie10 이전의 IE에서는 지원되지 않습니다. – Deborah
@DeborahSpeece, 매우 흥미 롭습니다. 그러나 실제로 flexbox를 사용하여 얻을 수 있습니까? 코드 예제를 제공 할 수 있습니까? 감사. – Paker