[image] 비례를 유지하면서 이미지로 div를 어떻게 채울 수 있습니까?

이 스레드를 찾았 습니다. 이미지의 종횡비를 유지하면서 <div>를 채우기 위해 이미지를 늘리는 방법은 무엇입니까? — 그것이 내가 원하는 것이 전부는 아닙니다.

특정 크기와 그 안에 이미지가있는 div가 있습니다. 이미지가 가로인지 세로인지에 관계없이 항상 div를 이미지로 채우고 싶습니다 . 그리고 이미지가 잘 렸는지 여부는 중요하지 않습니다 (div 자체에 오버플로가 숨겨져 있음).

이미지가 세로 경우 그래서 내가 원하는 width일을 100%하고는 height:auto이 비율에 남아 있도록. 이미지가 가로 인 경우 내가 원하는 height일을 100%하고 width to beauto`. 복잡해 보이죠?

<div class="container">
   <img src="some-image.jpg" alt="Could be portrait or landscape"/>
</div>

어떻게해야할지 모르기 때문에 나는 단순히 내가 의미하는 바에 대한 빠른 이미지를 만들었습니다. 제대로 설명 할 수도 없습니다.

여기에 이미지 설명 입력

그래서 나는 이것을 묻는 첫 번째 사람이 아닌 것 같습니다. 그러나 나는 이것에 대한 해결책을 실제로 찾지 못했습니다. 새로운 CSS3 방식이있을 수 있습니다. 저는 flex-box를 생각하고 있습니다. 어떤 생각? 내가 예상했던 것보다 훨씬 쉬울 수도 있습니다.



답변

원하는 것을 올바르게 이해했다면 가로 세로 비율을 유지하기 위해 너비 및 높이 속성을 이미지에서 제외하고 flexbox를 사용하여 중앙 정렬을 수행 할 수 있습니다.

.fill {
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden
}
.fill img {
    flex-shrink: 0;
    min-width: 100%;
    min-height: 100%
}
<div class="fill">
    <img src="https://lorempizza.com/320/240" alt="" />
</div>

여기에 JSFiddle

IE9, Chrome 31 및 Opera 18에서 성공적으로 테스트했습니다. 그러나 다른 브라우저는 테스트되지 않았습니다. 항상 그렇듯이 특정 지원 요구 사항을 고려해야합니다.


답변

조금 늦었지만 똑같은 문제가 있었고 마침내 다른 stackoverflow 게시물 ( https://stackoverflow.com/a/29103071 ) 의 도움으로 해결했습니다 .

.img {
   object-fit: cover;
   width: 50px;
   height: 100px;
}

이것이 여전히 누군가에게 도움이되기를 바랍니다.

추신 : 또한 max-height , max-width , min-widthmin-height CSS 속성 과 함께 작동 합니다. 특히 100 % 또는 100vh / 100vw 와 같은 길이 단위 를 사용하여 컨테이너 또는 전체 브라우저 창을 채울 때 편리 합니다.


답변

오래된 질문이지만 지금은 방법이 있으므로 업데이트 할 가치가 있습니다.

올바른 CSS 기반 대답은를 사용 object-fit: cover하는 것 background-size: cover입니다. 위치 지정은 object-position속성 별로 처리 되며 기본값은 중심입니다.

그러나 IE / Edge 브라우저 또는 Android <4.4.4에서는 지원되지 않습니다. 또한 object-positionSafari, iOS 또는 OSX에서는 지원되지 않습니다. Polyfill이 존재하며, object-fit-images 가 최상의 지원을 제공하는 것 같습니다.

속성의 작동 방식에 대한 자세한 내용 은 설명 및 데모 object-fit 대한 CSS 트릭 문서를 참조하십시오 .


답변

이렇게해야합니다.

img {
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
}


답변

아래의 모든 답변은 너비와 높이가 고정되어있어 솔루션이 “응답하지 않음”을 나타냅니다.

결과를 얻지 만 이미지 반응을 유지하기 위해 다음을 사용했습니다.

  1. 컨테이너 내부에 원하는 비율로 투명한 GIF 이미지를 배치하십시오.
  2. 크기를 조정하고 자르려는 이미지와 함께 이미지 태그 인라인 CSS 배경 제공

HTML :

<div class="container">
    <img style="background-image: url("https://i.imgur.com/XOmNCwY.jpg");" src="img/blank.gif">
</div>


.container img{
   width: 100%;
   height: auto;
   background-size: cover;
   background-repeat: no-repeat;
   background-position: center;
}​


답변

css flex 속성을 사용하여이를 달성 할 수 있습니다. 아래 코드를 참조하십시오

.img-container {
  border: 2px solid red;
  justify-content: center;
  display: flex;
  flex-direction: row;
  overflow: hidden;

}
.img-container .img-to-fit {
  flex: 1;
  height: 100%;
}
<div class="img-container">
  <img class="img-to-fit" src="https://images.pexels.com/photos/8633/nature-tree-green-pine.jpg" />
</div>


답변

background-size: cover와 함께 (IE9 +) 사용을 고려하십시오 background-image. IE8-의 경우 polyfill이 있습니다.