Страницы

Поиск по вопросам

воскресенье, 8 декабря 2019 г.

Автоподгон, авторесайз изображения под DIV

#html #css #javascript


Имеется некий div с классом .img-container и внутри картинка.
Истинные размеры картинки - могут быть любые. Внимание! Вопрос. Как сделать так чтобы картинка вписывалась в размер DIV по ширине и высоте, и пропорционально увеличивалась или уменьшалась, если DIV будет менять размеры (а он будет менять размеры)? Аналог на CSS для DIV: .img-container { background-size: cover; width: x; height: y; }


Ответы

Ответ 1



вот пример когда контейнер ресайзится в результате ресайза окна jQuery(function ($) { function fix_size() { var images = $('.img-container img'); images.each(setsize); function setsize() { var img = $(this), img_dom = img.get(0), container = img.parents('.img-container'); if (img_dom.complete) { resize(); } else img.one('load', resize); function resize() { if ((container.width() / container.height()) < (img_dom.width / img_dom.height)) { img.width('100%'); img.height('auto'); return; } img.height('100%'); img.width('auto'); } } } $(window).on('resize', fix_size); fix_size(); }); http://jsfiddle.net/oceog/bQjk8/ если хотите без jQuery, это реально, но делайте сами :)

Ответ 2



.panel { width: 300px; height: 200px; background: #fff; border: 1px solid #cecece; border-radius: 5px; position: absolute; } .container { width: 90%; height: 90%; border: 1px solid #cecece; border-radius: 5px; display: flex; justify-content: center; align-items: center; overflow: hidden; position: relative; transform: translate(-50%, -50%); top: 50%; left: 50%; } img { max-width: none; min-width: auto; min-height: auto; height: 100%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }


Ответ 3



Попробуйте сделать так: .img-container { background-size: cover; width: 300px; // например height: 100px; overflow: hidden; } .img-container img { width: 100%; height: 100%; } Обновление Если не получится, попробуйте так .img-container { background-size: cover; width: 300px; height: 100px; overflow: hidden; background-color: #F50000; text-align: center; } .img-container img { height: 100%; width: auto; max-width: 100%; } Средствами CSS это сложно реализовать (попробуйте в мой пример у .img-container в height подставить 300px;). Можно попробовать с пом. ajax вычислять широту и высоту контейнера и отдавать параметры картинке img.

Ответ 4



Думаю тут проще было бы все сделать через background:
.img { width: 150px; height: 150px; background: url(https://goo.gl/ypQyGs) no-repeat center/cover; }

Ответ 5



А ларчик то просто открывается... img {max-width:100%;height:auto;} И будут у вас ВСЕ картинки на сайте подгоняться под размер вашего дива. Хоть со старта, хоть при таскании ширины/высоты окна браузера. И это применимо ко всему. Хоть картинка, хоть видео, хоть ещё что-то, что придумаете. Учите цсс и хтмл, прежде чем заниматься жабой.

Ответ 6



.img-container { width: 362px; height: 185px; position: relative; overflow: hidden; img { position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; width: 100%; } Если хочешь добавить адаптивность, еще один блок выше создай, сделай его flex, задай атрибут flex-wrap: wrap

Ответ 7



Все что нужно .img-container img { max-width: 100%; height: auto; max-height:100% }

Ответ 8



Если через CSS, у тебя div с определенным классом, присвой картинке этот же класс, у тебя получится картинка такой же формы что и тот div в который ты ее "запихиваешь". И как раз таки при изменении параметров div'a этого класса, картинка будет тоже изменяться (увеличишь div в двое, то и картинка увеличится в двое). Так что если все грамотно сделать через классы, то это должно тебе помочь. Это мое субъективное мнение и как вариант помочь решить твою "проблему"

Ответ 9



.img-container img {width: 100%; height: 100%; object-fit: cover;} Собсно все. По просьбе дополняю: если размеры блока заданы жестко, мы можем использовать height: 100%;Свойство object-fit аналог background-size для замещаемых элементов https://developer.mozilla.org/ru/docs/Web/CSS/object-fit

Комментариев нет:

Отправить комментарий