HTML IMG 태그를 사용하여 종횡비를 유지하는 방법


132

응용 프로그램에서 사진을 표시하기 위해 HTML의 img 태그를 사용하고 있습니다. 높이 및 너비 속성을 64로 설정했습니다. 이미지 해상도 (예 : 256x256, 1024x768, 500x400, 205x246 등)를 64x64로 표시해야합니다. 그러나 img 태그의 높이 및 너비 속성을 64로 설정하면 가로 세로 비율이 유지되지 않으므로 이미지가 왜곡되어 보입니다.

참고로 정확한 코드는 다음과 같습니다.

<img src="Runtime Path to photo" border="1" height="64" width="64">


Chridam,이 질문을한지 오래입니다. 나는이 문제를 위해 일하고있는 회사를 떠났습니다. 그 당시 마감일을 맞추기 위해 다른 우선 순위를 연구하고 있었기 때문에 제안 된 해결책을 시도 할 수 없었습니다. 더 발전 할 기회를 얻지 못했습니다.
sunil kumar

답변:


134

높이와 너비를 설정하지 마십시오. 하나 또는 다른 것을 사용하면 올바른 종횡비가 유지됩니다.

.widthSet {
    max-width: 64px;
}

.heightSet {
    max-height: 64px;
}
<img src="http://placehold.it/200x250" />

<img src="http://placehold.it/200x250" width="64" />

<img src="http://placehold.it/200x250" height="64" />

<img src="http://placehold.it/200x250" class="widthSet" />

<img src="http://placehold.it/200x250" class="heightSet" />


14
...하지만 높이와 너비를 모두 고정하려면 어떻게해야합니까?
fatuhoku

7
동적 응용 프로그램에는 적합하지 않습니다. 이미지의 비율에 따라 너비 또는 높이가 64 픽셀인지 여부는 알 수 없습니다. 이것이 왜 상향식 응답입니까?
Koenigsberg

@ Mär이 질문은 고정 너비 및 / 또는 높이 이미지에 관한 것입니다. 응답 성이 문제의 요구 사항이 아니 었습니다.
순무

3
질문에 대해 구체적 있다는 크기는, 종횡비가 아니라, 고정되어 있는 이미지의 어떤 해상도. 64x64보다 작은 해상도 포함
Koenigsberg

66

여기에 샘플이 있습니다

div{
   width: 200px;
   height:200px;
   border:solid
 }

img{
    width: 100%;
    height: 100%;
    object-fit: contain;
    }
<div>
  <img src="https://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png">
</div>


8
이 솔루션을 사용하려는 사람들에게만 참고할 수있는 것입니다. 브라우저에서는 객체 적합을 잘 지원하지 않습니다. IE 또는 Edge에서는 전혀 지원되지 않습니다. 출처 : caniuse.com/#feat=object-fit
Sean Dawson

2
이제 Edge 16 이상에서 지원됩니다. w3schools.com/css/css3_object-fit.asp
Eddy R.

44

설정 widthheight이미지의에 auto있지만, 한계 둘 max-widthmax-height:

img {
    max-width:64px;
    max-height:64px;
    width:auto;
    height:auto;
}

깡깡이

64x64px "프레임"에 임의의 크기의 이미지를 표시하려면 이 바이올린 과 같이 인라인 블록 래퍼를 사용하고 위치를 지정할 수 있습니다 .


3
원래 크기를 넘어서지 않고 원래 크기보다 작아야합니다.
Koenigsberg

40
<img src="Runtime Path to photo"
     style="border: 1px solid #000; max-width:64px; max-height:64px;">

2
이미지 방향과 무관하게 올바른 솔루션입니다. 3rror404의 솔루션을 사용하려면 이미지가 키보다 큰지 또는 그 반대인지를 알아야합니다.
devios1

2
또한 설정 widthheightauto.
Mahmoodvcs

높이와 너비를 모두 제한하는 올바른 솔루션.
Pavan Kumar

1
이에 따라 이미지가 올바르게 제한 되지만 원래 크기를 초과하여 크기 조정되지는 않습니다. OP에서 원했던 두 개 중 어느 것이 오프닝 포스트에서 확실하지는 않지만.
Koenigsberg

14

나열된 방법 중 어느 것도 원하는 종횡비를 유지하면서 상자에 맞는 가장 큰 크기로 이미지를 스케일링하지 않습니다.

IMG 태그 (적어도 약간의 JavaScript 없이는)를 사용하여 수행 할 수 없지만 다음과 같이 수행 할 수 있습니다.

 <div style="background:center no-repeat url(...);background-size:contain;width:...;height:..."></div>

2
예. 사용 style="background: url('_'); background-size: cover width:_px height:_px"에 대한 <img>태그입니다.
Ujjwal Singh

3
감사합니다, @UjjwalSingh. 실제로 이미지 크기를 최대로 최대화 할 필요는 cover없습니다 contain. contain"레터 박스"로 연결됩니다.
Ortwin Gentz


3

div64x64 크기 의 이미지를 감싸고 이미지로 설정 width: inherit하십시오.

<div style="width: 64px; height: 64px;">
    <img src="Runtime path" style="width: inherit" />
</div>

1

표시하려는 이미지의 높이와 너비를 유지하기 위해 별도의 CSS 파일을 사용하지 않는 이유는 무엇입니까? 그런 식으로 너비와 높이를 반드시 제공 할 수 있습니다.

예 :

       image {
       width: 64px;
       height: 64px;
       }

1

이 시도:

<img src="Runtime Path to photo" border="1" height="64" width="64" object-fit="cover">

object-fit = "cover"를 추가하면 이미지가 가로 세로 비율을 잃지 않고 공간을 차지하게됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.