html — Пропорциональное вписывание изображения
Нужно вписать изображение в div
фиксированного размера, но так, чтобы больший размер изображения занимал 100% div’а, а меньший — сколько получится. Если подгонять только один фиксированный размер, то это выглядит так
div { width: 125px; height: 70px; } div img { width: 100%; height: auto; }
Но если у изображения высота больше, чем ширина, то получается швах. Решается ли проблема на CSS?
- html
- css
Если я правильно понял вопрос, то вам нужно свойство background-size
.
Например:
div { background: url(/example/image/mybg.png) 100% 100% no-repeat; background-size: contain; }
cover
Масштабирует изображение с сохранением пропорций так, чтобы его ширина или высота равнялась ширине или высоте блока.
contain
Масштабирует изображение с сохранением пропорций таким образом, чтобы картинка целиком поместилась внутрь блока.
Источник: https://webref.ru/css/background-size
А если именно с тегом img нужно, то может такое решение устроит?
.ex1 { width: 70px; height: 125px; } .ex2 { width: 125px; height: 70px; } div { border: 1px solid #ccc; display: inline-block; margin: 10px; position: relative; } div img { position: absolute; height: auto; width: auto; max-height: 100%; max-width: 100%; }
<div><img src="http://lorempixel.com/100/70/" alt=""></div> <div><img src="http://lorempixel.com/100/70/" alt=""></div> <div><img src="http://lorempixel.com/70/100/" alt=""></div> <div><img src="http://lorempixel.com/70/100/" alt=""></div>4
Можно еще проще, с object-fit: contain
. Тогда изображение автоматически центрируется. Замена на object-fit: cover
растянет картинку на весь блок, тоже с автоматическим центрированием.
div img { width: 100%; height: 100%; object-fit:contain; }
.ex1 { width: 70px; height: 125px; } .ex2 { width: 125px; height: 70px; } div { border: 1px solid #ccc; display: inline-block; margin: 10px; position: relative; } div img { width: 100%; height: 100%; object-fit: contain; } div.cover img { object-fit: cover; }
<div><img src="http://lorempixel.com/300/140/" alt=""></div> <div><img src="http://lorempixel.com/300/140/" alt=""></div> <div><img src="http://lorempixel.com/140/300/" alt=""></div> <div><img src="http://lorempixel.com/140/300/" alt=""></div> <br> <div><img src="http://lorempixel.1com/300/140/" alt=""></div> <div><img src="http://lorempixel.com/300/140/" alt=""></div> <div><img src="http://lorempixel.com/140/300/" alt=""></div> <div><img src="http://lorempixel.com/140/300/" alt=""></div>
Вариант с ответом Romchik, но без абсолютного позиционирования (расположение за счёт flexbox):
.ex1 { width: 70px; height: 125px; } .ex2 { width: 125px; height: 70px; } div { border: 1px solid #ccc; margin: 10px; /* сделать inline flex-контейнером */ display: inline-flex; /* центрировать элементы горизонтально */ justify-content: center; /* центрировать элементы вертикально */ align-items: center; } div img { max-height: 100%; max-width: 100%; }
<div><img src="https://i. stack.imgur.com/8w5wV.jpg" alt=""></div> <div><img src="https://i.stack.imgur.com/8w5wV.jpg" alt=""></div> <div><img src="https://i.stack.imgur.com/bkg7V.jpg" alt=""></div> <div><img src="https://i.stack.imgur.com/bkg7V.jpg" alt=""></div>
Зарегистрируйтесь или войдите
Регистрация через GoogleОтправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.
Vuetify — платформа компонентов Vue
Вы просматриваете документацию для Vuetify 3
Перейти к Vuetify 2 Компонент v-img
оснащен функциями для поддержки мультимедиа. В сочетании с vuetify-loader вы можете добавлять динамические прогрессивные изображения, чтобы улучшить взаимодействие с пользователем.
#Usage
Компонент v-img
используется для отображения адаптивного изображения с отложенной загрузкой и заполнителем.
#API
Компонент | Описание |
---|---|
v-img | 9003 3 Первичный компонент
#Предупреждения
Свойство lazy-src не действует, если не задано либо высота , либо соотношение сторон . Это связано с тем, что для отображения временного изображения контейнеру изображения требуется ненулевая высота.
#Примеры
#Реквизит
#Cover
Если предоставленное соотношение сторон не соответствует реальному изображению, поведение по умолчанию — заполнить как можно больше места без обрезки. Чтобы заполнить все доступное пространство, используйте крышку
опору.
#Height
v-img
автоматически увеличится до размера своего src
, сохраняя правильное соотношение сторон. Вы можете ограничить это с помощью пропсов height
и max-height
.
# Слоты
#Placeholder
v-img
имеет специальный слот placeholder
для отображения заполнителя во время загрузки изображения. Примечание: в приведенном ниже примере есть неправильный src, который не загружается, чтобы вы могли увидеть заполнитель.
#Error
v-img
имеет слот error
, который можно использовать для отображения альтернативного содержимого в случае возникновения ошибки при загрузке исходного изображения. Обычно этот слот используется для загрузки резервного изображения, если исходное изображение недоступно.
#Разное
#Будущие форматы изображений
По умолчанию v-img
отображает базовый элемент
. Если вы хотите использовать .webp
изображений с резервом для старых браузеров, вы можете передать список из элементов
в слот sources
:<шаблон #исходники> <источник srcset="image.webp"> шаблон>
Это будет вести себя аналогично:
<картинка> <источник srcset="image.webp"> картинка>
srcset
и атрибуты media
также можно использовать для художественного оформления или альтернативных размеров, см. MDN для получения дополнительной информации.
#Grid
Вы можете использовать v-img
для создания, например, картинной галереи.
#Complex Grid Layout
Создайте более сложный макет галереи изображений, используя классы flex-box
.
Готовы к большему?
Продолжите свое обучение с соответствующим контентом, выбранным командой , или перемещайтесь между страницами, используя навигационные ссылки ниже.Сетки
Компоненты
Соотношение сторон
Компоненты
Параллакс
Компоненты
Значок s Parallax Редактировать эту страницу на GitHub
· Nuxt Image
Узнайте, как использовать и настраивать компонент nuxt-img.
является заменой собственного тега
.
- Использует встроенный провайдер для оптимизации локальных и удаленных изображений
- Преобразует
src
в URL-адреса, оптимизированные для провайдера - Автоматически изменяет размеры изображений на основе
ширины
ивысоты 8 Создает адаптивные размеры при предоставлении размеров
- Поддерживает встроенную ленивую загрузку, а также другие
nuxt-img
выводит собственный тег img
напрямую (без какой-либо оболочки вокруг него). Используйте его так же, как и тег
:
Результат:
src
Путь к файлу изображения
src
должен быть в виде абсолютного пути для статических изображений в public/ 9каталог 0008.
В противном случае путь, ожидаемый провайдером, начинается с
или URL-адреса.
Для оптимизации изображений при использовании внешних URL-адресов в src
нам нужно добавить их в белый список, используя опцию доменов
.
ширина
/ высота
Укажите ширину/высоту изображения.
- Используйте нужную ширину/высоту для изображений статического размера, таких как значки или аватары
- Используйте исходную ширину/высоту изображения для адаптивных изображений (при использовании
размеры
)
размеры
Укажите адаптивные размеры.
Это список пар размер/ширина экрана, разделенных пробелами. Вы можете увидеть список определенных размеров экрана здесь).
Пример:
densities
Для создания специальных версий изображений для экранов с повышенной плотностью пикселей.
Пример:
png" плотности = "x1 x2" />
Поставщик
Используйте другой поставщик вместо опции по умолчанию по умолчанию, указанную в Nuxt.config
Пример:
Индекс.vue предустановка
Предустановки — это предварительно определенные наборы модификаторов изображений, которые можно использовать для создания унифицированной формы изображений в ваших проектах.
index.vue<шаблон>
формат
Если вы хотите показывать изображения в определенном формате, используйте этот реквизит.
Доступные форматы: webp
, avif
, jpeg
, jpg 9000 8,
png
, gif
и svg
. Если формат не указан, будет использоваться формат изображения по умолчанию.
качество
Качество сгенерированных изображений.
fit
Свойство fit
задает размер изображений.
Для этого свойства можно использовать пять стандартных значений.
-
обложка
: (по умолчанию) Сохранение соотношения сторон, убедитесь, что изображение покрывает оба предусмотренных размера путем обрезки/обрезания по размеру -
содержит
: Сохранение соотношения сторон, включение в оба предоставленных размера с использованием «почтового ящика», где это необходимо. -
fill
: Игнорировать соотношение сторон ввода и растягивать до обоих предоставленных размеров. -
внутри
: Сохраняя соотношение сторон, измените размер изображения до максимально возможного, убедившись, что его размеры меньше или равны обоим указанным. -
снаружи
: Сохраняя соотношение сторон, измените размер изображения, чтобы он был как можно меньше, при этом убедитесь, что его размеры больше или равны обоим указанным.
модификаторы
Помимо стандартных модификаторов у каждого провайдера могут быть свои дополнительные модификаторы. Поскольку эти модификаторы зависят от поставщика, обратитесь к его документации, чтобы узнать, что можно использовать.
Использование модификаторов
prop позволяет использовать любое из этих преобразований.
Пример:
предварительная загрузка
Если вы хотите предварительно загрузить изображение, используйте этот реквизит. Это поместит соответствующий тег link
в заголовок страницы.
loading
Это собственный атрибут, предоставляющий подсказку браузеру о том, как обрабатывать загрузку изображения, находящегося за пределами области просмотра. Поддерживается последней версией всех основных браузеров с марта 2022 года.
Установите loading="lazy"
, чтобы отложить загрузку изображения, пока оно не появится в окне просмотра.