Изображение сжимается при изменении высоты браузера, но не при изменении ширины

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

Для этого я использовал:

.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 1240px;
}

Итак, если изображение 500x1000 пикселей, оно будет занимать высоту 92vh, а если оно 1000x500, оно будет иметь ширину 1240 пикселей и высоту (наиболее вероятно) меньше 92vh.

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

Не знаю, как получить лучшее из обоих миров.

https://codepen.io/BozhidarSK/pen/NBKyyW

.specific-image-flex-container {
  display: flex;
}

.specific-image-column {
  flex: 4;
}

.specific-image-container-element {
  text-align: center;
  position: relative;
  display: inline-block;
  width: 100%;
}

.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 1240px;
}

.stickySpecificContainer {
  position: relative;
  z-index: 2;
  display: inline-block;
}
<div class = "specific-image-flex-container">

  <div class = "specific-image-column">
    <div class='specific-image-container-element'>
      <div class = "stickySpecificContainer">
        <img class='specific-image' src='https://i.redd.it/1v3x2pxkjy611.png' alt='Random image' />
      </div>
    </div>
  </div>

</div>

добавить width:40%; или аналогичный класс конкретного изображения.

user2796515 09.07.2018 17:13

Но это просто делает изображение шириной 40% от родительского элемента? Это ничего не решает.

Bobimaru 09.07.2018 17:17

Вы хотите сказать, что хотите, чтобы изображение было не выше высоты браузера И не шире ширины браузера?

G Cadogan 09.07.2018 17:18

@Bobimaru см. Исправленный ответ.

Salman A 09.07.2018 23:35
Улучшение производительности загрузки с помощью 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
239
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

дать max-width: 100% изображению вместо значения в пикселях, процентное значение гарантирует, что максимальная ширина изображения составляет 100% документа.

.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 100%
  }

.specific-image-flex-container {
  display: flex;
}

.specific-image-column {
  flex: 4;
}

.specific-image-container-element {
  text-align: center;
  position: relative;
  display: inline-block;
  width: 100%;
}

.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 100%;
}

.stickySpecificContainer {
  position: relative;
  z-index: 2;
  display: inline-block;
}
<div class = "specific-image-flex-container">

  <div class = "specific-image-column">
    <div class='specific-image-container-element'>
      <div class = "stickySpecificContainer">
        <img class='specific-image' src='https://i.redd.it/1v3x2pxkjy611.png' alt='Random image' />
      </div>
    </div>
  </div>

</div>

Это устранило мою проблему с масштабированием, однако, таким образом, мое изображение может иметь ширину более 1240 пикселей? Есть ли способ сохранить отзывчивость с помощью% и по-прежнему ограничить максимальную ширину до 1240 пикселей?

Bobimaru 09.07.2018 17:27

Привет, Бобимару, ширина изображения не будет превышать исходную ширину, если вы не укажете это таким образом, поэтому использование 100% - лучший способ убедиться, что изображение останется отзывчивым.

Jismon Thomas 09.07.2018 17:31

Вы можете попробовать width: 100%; максимальная ширина: 1240 пикселей;

wiiiiilllllll 09.07.2018 17:36

Хммм, после добавления ширины: 100%; max-width: 1240px, изображение растягивается непропорционально, если я изменяю высоту браузера.

Bobimaru 09.07.2018 17:39

@wiiiiilllllll, это не сработает, ширина 100% растянет изображение

Jismon Thomas 09.07.2018 17:40

Возможно ли вообще выполнить то, о чем я прошу? Может, я просто выберу одну из других вариаций.

Bobimaru 09.07.2018 17:49

привет Бобимару, какие еще решения вы ищете, этот ответ вам не подошел?

Jismon Thomas 09.07.2018 17:51

если вы не уверены в этом, загляните сюда: stackoverflow.com/questions/3029422/…

Jismon Thomas 09.07.2018 17:52

Это работает, если я хочу иметь максимальную ширину 100%, однако мне нужно иметь максимальную ширину 1240 пикселей, сохраняя при этом отзывчивость. Очевидно, ваш ответ лучше того, что я хочу, и если я не найду решение своей проблемы, я воспользуюсь им.

Bobimaru 09.07.2018 17:58

Позвольте нам продолжить обсуждение в чате.

Jismon Thomas 09.07.2018 18:03

Извините за задержку, возникла неожиданная работа. Вы все еще готовы поболтать?

Bobimaru 09.07.2018 18:50

92vh составляет 92% высоты обзора. vw используется для ширины обзора.

.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 92vw;
}
Ответ принят как подходящий

Вы хотите, чтобы изображение было максимальной шириной 100% по умолчанию и 1240 пикселей, если экран шире 1240 пикселей. Добиться желаемого результата можно с помощью медиа-запросов:

body {
  margin: 0;
}
.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 100%;
}
@media screen and (min-width: 1240px) {
  .specific-image {
    max-width: 1240px;
  }
}
<img class = "specific-image" src = "https://dummyimage.com/1600x600/000/fff">

Та же демонстрация с квадратным изображением:

body {
  margin: 0;
}
.specific-image {
  display: block;
  max-height: 92vh;
  max-width: 100%;
}
@media screen and (min-width: 1240px) {
  .specific-image {
    max-width: 1240px;
  }
}
<img class = "specific-image" src = "https://dummyimage.com/600x600/000/fff">

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