2013-09-04 3 views
3

У меня есть DIV, а IMG, настроенный на 100% высоту и ширину, авто.DIV обертывание вокруг IMG со 100% высотой

Но я хочу, чтобы 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

Вы можете уточнить изменение размера браузера? это всплывающее окно? какова ваша высота основания, размер изображения? height: 100% основано на высоте родительского элемента и будет работать только в том случае, если родительский элемент имеет явную высоту. –

+0

@ Matt.C Он должен растянуться на 100% до высоты своего родителя. В конце концов это будет окно. Изображение работает правильно. Его просто div, который не будет «обернуться» вокруг изображения. После изменения размера браузера изображение масштабируется так, как должно. Дива остается позади. При повторном нажатии RUN в jsfiddle. Дива снова обертывается. Это похоже на то, что div только устанавливает его собственную ширину один раз. –

+0

Можете ли вы не просто поместить красную границу 20px на элемент img и сделать изображение заполняющим пространство, необходимое для отображения: block; и присвоение ширины или высоты? –

ответ

0

попробуйте установить ширину вашего div так же, как и ширину вашего изображения, возможно?

+0

Публикуйте предложения как записку, а не как ответ. – Nitesh

+0

Они оба автоматические, потому что они должны масштабироваться. –

+0

О, я вижу, я довольно новичок в этом. P.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

Вам не нужно устанавливать какие-либо свойства 'height' для DIV тегов IMG. Кроме того, ваш второй jsFiddle является неполным. Вам нужно установить некоторые свойства 'display'. http://jsfiddle.net/jjktF/16/ – hungerstar

+0

@hungerstar Я привел пример отзывчивого изображения ..... проверьте мой ответ .... его изменение размера в соответствии с нашим размером экрана .... –

+0

Я сделал, используйте изображение шириной 200 пикселей для 'DEMO2', тогда вы получите это« ах-ха! ». момент. Собственно, я сделаю это для вас: http://jsfiddle.net/jjktF/17/. Кроме того, у вас есть высота descender, отображаемая в вашем '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 будет масштабироваться, чтобы соответствовать содержащему элементу.

  • т.е. если ваше изображение 100px на 100px и содержащий элемент 400px в ширину, используя max-width изображение будет только масштабировать до 100px по 100px, где с width было бы масштабироваться до 400px по 400px и стать зернистым.

После этого это всего лишь вопрос определения того, как вы собираетесь обернуть свою «границу» (элемент контейнера) вокруг изображения. Вы можете сделать это одним из двух способов:

CSS

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

Использование display: block; на изображение удаляет пространство, которое отображается под изображением из-за того, что изображение по умолчанию является встроенным элементом, и это пространство связано с высотой дескриптора. Плавание «границы» (элемент контейнера) будет иметь тот же эффект.

HTML

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

Если вы собираетесь использовать простой один цвет границы, я бы, вероятно, просто использовать свойство CSS border на самом изображении.

+0

Спасибо, голодный! Но красный цвет - это просто помощник. Мне нужно, чтобы размер изображения составлял 100% высоты окна. И я хочу, чтобы div автоматически увеличивал ширину изображения до ширины изображения. Как здесь http://jsfiddle.net/jjktF/3/. Изображение делает это правильно, при изменении размера браузера размер div не изменяется. –

Смежные вопросы