JQuery: изменение размера изображения в зависимости от изменения размера браузера

Я пытаюсь изменить размер изображения в зависимости от размера/изменения размера браузера с помощью JQuery.

Я хочу, чтобы изображение масштабировалось и сохраняло его соотношение, а не обрезалось.

Я использую Bootstrap, и мой HTML выглядит так:

<div class = "container-fluid">
      <div class = "row">
        <div class = "col-sm">
          <div class = "text-block">
            <h1>Hellow World</h1>
            <h6>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</h6>
          </div>
        </div>
        <div class = "col-sm img-container">
          <img src = "image.png" />
        </div>
        <div class = "col-sm">
          <div class = "text-block">
          <h6>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</h6>
          </div>
        </div>
      </div>
    </div>

Изображение находится в div .img-container, и мой JQuery выглядит так:

$(document).ready(function() {
   $(window).resize(function() {
     var img = $("img");
     var image = $(".img-container").find(img);
     var browserRatio =  $(this).width() / $(this).height();
     var imageRatio = image.width() / image.height();

     if (browserRatio > imageRatio) {
       $(".img-container").find(img).css({ "width": "100%", "height": "auto"});
     }
     else if (imageRatio > browserRatio) {
       $(".img-container").find(img).css({ "width": "auto", "height": "100%"});
     }

     console.info("Browser ratio is :" + browserRatio);
     console.info("Image ratio is:" + imageRatio);
   });
});

Как вы можете видеть, я беру соотношение высоты и ширины браузера по мере его изменения, а затем проверяю, больше или меньше соотношение изображения, чем соотношение браузера, а затем пытаюсь настроить его с помощью css.

Это не работает, и ширина изображения не поддерживает его соотношение. Что не так с моим кодом?

Является ли размер изображения динамическим или соотношение будет известно заранее?

Erik Philips 29.01.2019 02:53

Динамический. Начинается с малого, и по мере того, как браузер становится больше, изображение растет и начинает заползать в соседнее пространство div, а соседние div становятся меньше.

Nick Kinlen 29.01.2019 03:24

Вы заранее знаете аспектное радио?

Erik Philips 29.01.2019 05:09

Исходное изображение 450 X 750

Nick Kinlen 29.01.2019 21:59

Видео не имеет смысла. Вы хотите, чтобы размер центрального элемента никогда не превышал 450x750?

Erik Philips 29.01.2019 22:25

Это домашнее задание на собеседовании. Честно говоря, я сам немного смущен этим. Пытаюсь изо всех сил подражать тому, что происходит в видео, и я в тупике.

Nick Kinlen 29.01.2019 23:33
jsfiddle.net/sd0zokmf/1 настолько близок, насколько я понял, но, поскольку на самом деле нет определенного вопроса, на него действительно сложно ответить.
Erik Philips 30.01.2019 00:11
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
148
1

Ответы 1

Недавно я ответил на тот же вопрос, просто используя CSS https://jsfiddle.net/nazimboudeffa/j6kwtgxa/

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
}

img {
  padding: 0;
  display: block;
  margin: 0 auto;
  max-height: 100%;
  max-width: 100%;
}

Не работает для меня. Изображение имеет два элемента div с каждой стороны и должно поддерживать соотношение высоты и ширины, даже если два соседних элемента div изменяют размер.

Nick Kinlen 28.01.2019 22:24

Вы пытались заменить img на div в моем примере?

nazimboudeffa 28.01.2019 22:28

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