2015-06-11 3 views
3

Я пытаюсь сделать изображение подходящим для его контейнера. Проблема в том, что я могу установить только ее ширину width: 100% или высоту height: 100%, но не обе.CSS Ширина и высота изображения изображения

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

Это стандартное поведение в Windows Photo Viewer. Изображение всегда видно, центрируется и сохраняет соотношение. Я пытаюсь сделать это именно так.

PS: Я бы предпочел решение css. Но если это невозможно/очень болезненно, js тоже нормально.

PSPS: Извините, если это дубликат. Я обыскал интернет и нашел похожие вопросы, но ни один из них, казалось, не имел правильного ответа.

+0

Что у вас есть? – Screech129

+0

Является ли контейнер фиксированным? Это такая же пропорция, как и изображение? – Huangism

+0

@ Хуангизм Точка зрения. Размер контейнера зависит от размера окна браузера. Так что это может быть что угодно, и это может измениться на что угодно. – Haeri

ответ

0

Вы можете установить изображение с помощью CSS background-image, как это:

div{ 
    width: 200px; 
    height: 200px; 
    background-image: url("http://i.imgur.com/cjgKmvp.jpg"); 
    background-size: contain; 
    background-repeat: no-repeat; 
} 

DEMO: https://jsfiddle.net/ue49awaL/8/

+0

Спасибо за ответ. Проблема в том, что это не сохранит пропорции изображения. – Haeri

+0

Затем используйте 'background-size: cover;' вместо :) См. Следующую демонстрационную версию: https://jsfiddle.net/lmgonzalves/ue49awaL/5/ – lmgonzalves

+0

Ха-ха, я думаю, в этот момент я могу сказать, что я пробовал просто о каждом обычном методе css;) Проблема с размером: обложка; заключается в том, что он обрезает изображение. – Haeri

1

Есть несколько решений в этом. Ни один из них не идеален. И обычно это зависит от того, хотите ли вы обрезать изображение или нет.

Если вы хорошо с кадрирование, вы можете попробовать что-то вроде:

<div class="image"></div> 
<style> 
    .image { 
      width:250px; 
      height:150px; 
      background-image:url('http://lorempixel.com/400/200/'); 
      background-size:cover; 
    } 
</style> 

Если вы не хотите, чтобы обрезать, то это будет зависеть, как вы хотите, чтобы выложить изображение (или изображения). Вот несколько примеров:

+0

Спасибо за ответ. Изображение - логотип компании, поэтому лучше не обрезать xD. И спасибо за ссылки на галерею, но поскольку это только одно изображение, я не думаю, что мне понадобится вся js-библиотека для отображения галерей ... – Haeri

+1

Таким образом, изображение должно быть того же размера, что и контейнер всегда? Является ли изображение движущей шириной/высотой контейнера или контейнером, управляющим шириной/высотой изображения? –

+0

Дается размер контейнера. Изображение должно адаптироваться к нему. И изображение не обязательно должно быть точным размером контейнера. Он должен просто отрегулировать масштаб, чтобы соотношение изображения сохранялось, ни одно изображение не обрезано и не центрировано, где оно не заполняет контейнер (например, если оно адаптируется к ширине, оно должно располагаться вертикально) – Haeri

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