2013-09-04 2 views
3

DIV와 IMG 모두 100 % 높이로 설정되어 있고 너비는 자동입니다.100 % 높이의 IMG 주위에 DIV 배치

하지만 브라우저의 크기를 조정할 때 DIV가 IMG의 너비에 맞게 크기를 조정하고 가로 세로 비율을 유지하기를 원합니다. 이것 만이 그렇게 보이지 않습니다. 모든 브라우저에서. 아무도 왜이 문제가 발생하는지 알 수 있습니까?

div { 
    height:100%; 
    background:red; 
    display:inline-block; 
    padding:20px; 
    box-sizing:border-box; 
} 

img { 
    height:100%; 
    display:block; 
} 

<div> 
    <img src="http://upload.wikimedia.org/wikipedia/commons/e/e9/Official_portrait_of_Barack_Obama.jpg"/> 
</div> 

당신은 여기에 그것을 밖으로 시도 할 수 있습니다. div는 빨간색 배경을 가지고 있습니다. http://jsfiddle.net/jjktF/3/

감사!

+0

브라우저의 크기를 재조정 할 수 있습니까? 이게 팝업 바람인가? 기본 높이, 이미지의 크기는 얼마입니까? 높이 : 100 %는 상위 요소의 높이를 기반으로하며 상위 요소에 명시적인 높이가 설정된 경우에만 작동합니다. –

+0

@ Matt.C 부모의 높이까지 100 % 스트레칭해야합니다. 결국 그것은 창이 될 것입니다. 이미지가 올바르게 작동합니다. 이미지 주위에 '재 포장'하지 않는 div 만 있습니다. 브라우저의 크기를 조정하면 이미지 크기가 조정되는 것처럼 조정됩니다. div가 남았습니다. jsfiddle에서 RUN을 다시 누르면. div가 다시 감싸줍니다. div와 같은 것은 자신의 너비를 한 번 설정하는 것입니다. –

+0

img 요소에 20px 붉은 테두리를 넣고 display : block으로 필요한 공간을 채우게 할 수는 없습니까? 너비 또는 높이를 지정 하시겠습니까? –

답변

0

div의 너비를 이미지의 너비와 같게 설정하려고합니다.

+0

제안 사항을 메모가 아닌 답변으로 게시하십시오. – Nitesh

+0

둘 다 자동으로 크기 조정이 필요합니다. –

+0

아, 나는 이걸 꽤 처음 보았습니다. 어떤 이유로 P.s.s 내가 질문에 의견을 추가 할 수 없다 –

2

헤이 나는 이것이 당신이 CSS

div { 
    background: none repeat scroll 0 0 red; 
    display: inline-block; 
    height: 100%; 
    max-width: 100%; 
    padding: 20px; 
} 

img { 
    display: block; 
    height: auto; 
    max-width: 100%; 
} 

귀하의 요구 사항에 따라 그 작업 .......

DEMO

DEMO2

+0

IMG 태그의 DIV에 대해 'height'속성을 설정할 필요가 없습니다. 또한 두 번째 jsFiddle은 불완전합니다. 'display' 속성을 설정해야합니다. http://jsfiddle.net/jjktF/16/ – hungerstar

+0

@hungerstar 응답 성있는 이미지의 예를 보여주었습니다 ..... 내 대답을 확인하십시오 .... 화면 크기에 따라 크기가 조절됩니다 .... –

+0

나는했는데, 'DEMO2'에 200 픽셀 너비의 이미지를 사용하면 "아 - 하!" 순간. 실제로, 나는 너를 위해 그것을 할 것이다 : http://jsfiddle.net/jjktF/17/. 또한 'DEMO2'에 디 센더 높이가 표시됩니다. – hungerstar

0
아래 언급 참조 도움이되기를 바랍니다

이렇게 div 너비를 설정할 수 있습니다.

div { 
    background: none repeat scroll 0 0 red; 
    display: inline-block; 
    height: 100%; 
    width: 100%; 
    padding: 20px; 
} 

img { 
    display: block; 
    height: auto; 
    width: 100%; 
} 
+1

이미지가 원래 가로 세로 비율을 유지하지 않습니다. –

0

당신은 max-width: 100%; 또는 width: 100%; 그래서 이미지가 다시 크기 것입니다 사용할 수 있습니다. 차이점은 max-width은 이미지가 원래 크기를 초과하여 크기 조정되지 않도록하고 width은 포함 요소에 맞게 조정됩니다.

  • 즉 이미지가 100 픽셀로 100 픽셀이며, 포함하는 요소는 400 픽셀에서 400 픽셀까지 확장하고 거친 될 것 곳 width와 이미지는 100 픽셀에서 100 픽셀까지 확장 할 수 max-width를 사용하여, 폭 400 픽셀 인 경우.

그런 다음 이미지 주위에 "테두리"(컨테이너 요소)를 어떻게 감쌀 것인지 결정해야합니다. 이 한 두 가지 방법으로 수행 할 수 있습니다

  • 디스플레이`로 "경계"(컨테이너 요소)를 설정 : 인라인 블록; http://jsfiddle.net/wp2eS/
  • 또는 - 당신의 "경계"(컨테이너 요소) 이미지에 display: block;를 사용

    img { 
        max-width: 100%; 
        /* or */ 
        width: 100%; 
        display: block; 
    } 
    

    인해 그 사실에 이미지 아래에 표시되는 공간을 제거 http://jsfiddle.net/wp2eS/1/

CSS 플로트 이미지는 기본적으로 인라인 요소이며 해당 공간은 디 센더 높이 때문입니다. "테두리"(컨테이너 요소)를 플로팅하는 것은 동일한 효과를 가져옵니다.

HTML

<span class="frame"> 
    <img src="http://lorempixel.com/200/200/abstract/" /> 
</span> 

당신은 내가 아마 이미지 자체에 CSS border 속성을 사용하는 것이 단순한 하나 개의 색상 국경을 사용하려는 경우.

+0

감사합니다. hungerstar! 그러나 붉은 색은 단지 도우미입니다. 창 크기를 100 % 높이해야합니다. div의 자동 크기를 이미지 너비의 너비로 지정합니다. 여기 http://jsfiddle.net/jjktF/3/와 같이. 이미지가 올바르게 표시되지만 div는 브라우저 높이의 크기를 조정할 때 표시되지 않습니다. –

관련 문제