2012-08-08 3 views
7

는 다음 코드 조각을 고려하십시오응답 이미지 (최대 폭)

HTML :

<div> 
    <img src="http://placehold.it/600x150" /> 
</div> 

CSS :

div { max-width: 200px } 
img { max-width: 100% }​ 

을 기본 크기에 관계없이 이미지는 200 픽셀보다 넓지 않습니다. 여태까지는 그런대로 잘됐다. 여기

는 바이올린의 : 부모 요소가있는 경우, 그러나 http://jsfiddle.net/PeAAb/


display 세트 table에 :

div { max-width: 200px; display: table } 

이미지 마술 그것으로 table을 확대, 네이티브 폭으로 확장 . http://jsfiddle.net/PeAAb/1/


같은 실제 테이블과 일 : http://jsfiddle.net/PeAAb/2/


질문 :이 예상되는 동작 여기

는 바이올린입니까? 그렇다면이 문제를 해결하기 위해 무엇을 할 수 있습니까?

max-width 대신 부모의 width (백분율 기반 너비)을 올바르게 설정하면 이미지가 해당 상자로 다시 압축되지만 해결 방법이 아닙니다. 부모님이 유동적이어야합니다 (저는 사이트의 주요 구조에 이것을 사용하여 the sidebar HTML appear after the main content in the source, but with the sidebar being fixed width을 가질 수 있습니다).

또한 setting table-layout to fixed은 여기에서 no effect 인 것으로 보입니다.

+0

SharePoint 2010에서 응답 성이 뛰어난 항목을 만들려고합니다.이 항목은 중첩 된 테이블을 주변에 배치하는 습관이 있습니다. 이 문제에 대한 해결책을 안다면 (IE8까지) 나는 그것에 대해 듣고 싶다. IE8/9에서 @ pKs의 해결책 (display : block;)이 여기에 실패합니다. ( –

답변

7

여기서 문제는 테이블 (또는 테이블처럼 동작하도록 설정된 div)이 블록 요소가 아니며 max-width가 블록 요소에만 적용된다는 것입니다. 내 유일한 제안은 display : block을 사용하여 div에 table 요소를 래핑하는 것입니다. 세트. http://jsfiddle.net/PeAAb/4/

+0

* 올바른 * 답변을 주셔서 감사합니다. 그러나 제 경우에는 이것이 도움이되지 않습니다. [내 데모] (http : // jsfiddle.net/659JN/) 웹킷에서는 제대로 작동하지만 아무데도 사용할 수 없습니다.그 안에 또 다른 요소를 감싸는 것은 도움이되지 않습니다 (http://jsfiddle.net/6BWCw/). –

+0

나는이 대답을 마지 못해 받아들입니다. 올바른 것입니다. 그러나 문제를 해결하지는 못합니다. –

+0

조셉, 수락 해 주셔서 감사합니다. 나는 일반적으로 "할 수없는"답변을 게시하는 것을 좋아하지 않기 때문에 귀하의 문제에 대한 해결책을 가지기를 바랍니다. 그러나 내 자신의 개인적인 경험과 결합 된 약간의 연구 후에 나는 그리 올 수 없었습니다. 당신의 문제에 대한 좋은 해결책. 사실, 이것은 상당히 당혹 스럽습니다. 나는 이보다 더 잘 해결할 수있는 사람의 말을 듣기를 고대한다. –

-1

나는이 꽤 늦게 알아,하지만 아주 간단하고 아주 쉽게 밝혀졌다 대답은, 테이블 레이아웃이 발견 : 고정

다음은 관심있는 경우에 바이올린입니다.

여기 찾았 http://blog.room34.com/archives/5042

어쨌든, 이것이 내가 있다는 사실이 수수께끼에 대한 답을 찾는 분들을위한 것입니다.

+0

나는 왜 OP가 그에게 도움이되지 않았기 때문에 특히 'table-layout : fixed'가 여기에 대한 대답인지 간단히 설명하거나 말을 바꾸겠다. – Dan

+0

이것은 지정된 너비에서만 작동합니다. 문제는'max-width' 세트로 이것을 달성하는 방법이었습니다. 부모는 유동 너비 여야합니다. –

관련 문제