Сделайте изображение подходящим с помощью div без потери содержимого в CSS

У меня есть div, оборачивающий два изображения. Я хочу, чтобы второе изображение поместилось в div, потому что ширина и высота являются динамическими.

Мой код выглядит так:

.box {
  width: 640px;
  height: 540px;
  float: left;
  overflow: hidden;
}

.img-border {
  width: 100%;
  height: 100%;
  display: block;
  border-radius: 20px;
  margin: 5px;
}
<div class = "box" id = "target">
  <div align = "center">
    <img src = "http://cdn.tgdd.vn/Files/2014/06/24/551004/game-duoi-hinh-bat-chu4.jpg" width = "60%" height = "60%">
  </div>
  <img class = "img-border" id = "imgQues" src = "https://4.bp.blogspot.com/-K5SwATiq6cI/U84bk7MZPWI/AAAAAAAADkI/4lWV0ErVAFs/s1600/2014-07-22+14.11.00-1.png" />
  <div class = "comment" id = "chatbox">
  </div>
</div>

Проблема, которую вы можете увидеть на .img-border, заключается в том, что не помещается (растягивается и изменяет размер) в div .box и сохраняется его соотношение сторон.

Есть ли способ уместить второй образ img-border в div и сохранить соотношение?

Взгляните на CSS принудительно изменяет размер изображения и сохраняет соотношение сторон и посмотрите, поможет ли это.

Heretic Monkey 15.09.2018 16:12

Используйте background-image вместо background-size: cover;

ElusiveCoder 15.09.2018 16:38

@KunalKhatri изображение должно быть источником, потому что оно переменное, значения меняются каждый раз.

Ave 15.09.2018 17:20

Вы можете установить фоновое изображение динамически с помощью jquery в соответствии с требованиями.

ElusiveCoder 16.09.2018 18:05
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
4
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

попробуйте следующее:

.box {
  width: 640px;
  height: 540px;
  float: left;
  overflow: hidden;
  /**
    Just for visualization 
  **/
  background: gray;
}

/**
  Just dummy names, rename as you like
*/
.box__first-child,
.box__second-child {
  float: left;
  width: 49.99999999%;
}

/**
  Force images to always take remaining space
*/
.box img {
  width: 100%;
}

.img-border {
  width: 100%;
  height: 100%;
  display: block;
  border-radius: 20px;
  margin: 5px;
}
<div class = "box" id = "target">
  <div class = "box__first-child" align = "center">
    <img src = "http://cdn.tgdd.vn/Files/2014/06/24/551004/game-duoi-hinh-bat-chu4.jpg" width = "60%" height = "60%">
  </div>
  <div class = "box__second-child">
    <img class = "img-border" id = "imgQues" src = "https://4.bp.blogspot.com/-K5SwATiq6cI/U84bk7MZPWI/AAAAAAAADkI/4lWV0ErVAFs/s1600/2014-07-22+14.11.00-1.png" />
    <div class = "comment" id = "chatbox">
    </div>
  </div>
</div>

Изменения html не являются обязательными, вы можете сделать это и другим способом, но это кажется мне самым чистым. Хитрость в основном заключается в том, чтобы заставить изображения всегда занимать все пространство и выравнивать элементы друг за другом с помощью float.

Редактировать:

Preview Variant 1

jsfiddle - вариант 1

Preview Variant 2

jsfiddle - вариант 2

Должно получиться два разных ряда. Ваш пример, два изображения в одной строке. Я хочу, чтобы первое изображение было 1/3 вверху div, второе изображение должно быть 2/3 внизу.

Ave 15.09.2018 17:10

@vanloc Я добавил оба варианта, я думаю, вы могли иметь в виду ... простите, я не очень хорош в этом: D

Timo Reymann 17.09.2018 21:45

Другие вопросы по теме