@k31f
творец/фотограф/дизайнер

Как img во весь div?

04e315f852444a9a88329f3a2de3457e.jpg

есть div размером 1:1, 1:2, 2:1, 2:2, короче квадрат, большой квадрат, вертикальный блок и горизонтальный блок. Есть картинка непредсказуемого размера, т.е. может быть вертикальной, может горизонтальной. Картинка в этот div вставляется через img и надо сделать так, чтобы картинка уменьшалась/увеличивалась пропорционально до размеров div и заполняла его весь и центровалась. без полей по бокам или сверху снизу.
сделать это если картинку пихать из css бекграундом и background-size:cover; - получилось, но надо сделать через img

зы. бекграунд и background-size:cover не подходят ибо через js идет рендом картинки при загрузке и смена её по времени. хочется сделать красиво и элегантно.

благодарю и буду рад если поможете.
  • Вопрос задан
  • 97544 просмотра
Пригласить эксперта
Ответы на вопрос 6
Lumore
@Lumore
Front-end developer
div {
text-align: -webkit-center;
}
img {
width: 100%;
}
Ответ написан
@lnked
с помощью такого трюка можно такое реализовать
aspect ratio

<div class="ratio_image ratio_image_1x1">
		<img src="http://lorempixel.com/500/500/" alt="">
	</div>

	<div class="ratio_image ratio_image_1x2">
		<img src="http://lorempixel.com/500/500/" alt="">
	</div>

	<div class="ratio_image ratio_image_2x1">
		<img src="http://lorempixel.com/500/500/" alt="">
	</div>

	<div class="ratio_image ratio_image_2x2">
		<img src="http://lorempixel.com/500/500/" alt="">
	</div>


.ratio_image {
	width: 300px;
	height: 300px;
	float: left;
	margin: 20px;
	position: relative;
	overflow: hidden;
}

.ratio_image:before {
	width: 100%;
    display: block;
    content: "";
}

.ratio_image img {
	min-width: 100%;
	min-height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}

.ratio_image_2x1 {
	width: 600px;
}

.ratio_image_1x2,
.ratio_image_2x2 {
	height: 600px;
}

.ratio_image img {
	width: 100%;
}

.ratio_image_1x1:before {
    padding-top: 100%; /* (300 / 300) * 100%; */
}

.ratio_image_2x1:before {
    padding-top: 200%; /* (600 / 300) * 100%; */
}

.ratio_image_1x2:before {
    padding-top: 50%; /* (300 / 600) * 100%; */
}

.ratio_image_2x2:before {
    padding-top: 100%; /* (600 / 600) * 100%; */
}
Ответ написан
Punkie
@Punkie
зы. бекграунд и background-size:cover не подходят ибо через js идет рендом картинки при загрузке и смена её по времени.


в чем проблема через js добавлять inline-стиль style="background-image:...." ?
Ответ написан
@ivankalita
Егор Ильин, Привет, ты так и не нашел ответ на свой вопрос?))
Ответ написан
Комментировать
@tastytim
.image {
background: url("../img/banner.jpg");
width: 100%;
height: 100%;
position:absolute;
background-repeat: no-repeat;
background-size: cover;
background-position: center;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы