Skip to content

Image Kit ​

1.1.8 ​

2026-09-24

  • <VImage> больше не навязывает display/размеры блока/object-fit инлайн-стилями там, где это не нужно — инлайн-стили всегда перебивают класс, который применяет ваше приложение на том же элементе, независимо от специфичности. Явно заданный проп fit по-прежнему применяется инлайном (гарантированно побеждает). Если проп не задан, дефолт object-fit: cover теперь приходит из обычного, переопределяемого CSS-класса — применяется только когда блок изображения действительно ограничен (layout "fill"/"fixed", либо заданы одновременно width и height), а иначе не применяется вовсе, так как object-fit без ограниченного блока не имеет эффекта. То же самое касается базовых стилей display/размеров — width: 100%; height: auto теперь применяется только когда заданы одновременно width и height (иначе не из чего сохранять пропорции), поэтому <VImage> без этих пропов, размер которого управляется вашим собственным CSS через max-height/max-width, сохраняет естественные пропорции вместо растягивания на всю ширину контейнера.
  • Исправлено: стили пакета (анимация shimmer-плейсхолдера, а теперь и классы выше) были недоступны через import '@macrulez/vue-image-kit/style.css' — файл не был объявлен в exports пакета, из-за чего placeholderMode="shimmer" нигде фактически не работал. Модуль Nuxt теперь подключает стили автоматически.
  • Исправлено: удаление обёртки в 1.1.7 приводило к предупреждению Vue о рассинхронизации при гидратации на каждой SSR-странице — проверка, которая решала, что рендерить, не могла отличить «сервер» от «самого первого рендера на клиенте во время гидратации», из-за чего они никогда фактически не совпадали. Теперь компонент безопасен для гидратации.

1.1.7 ​

2026-09-23

  • <VImage> больше не рендерится внутри обёртывающего <span>. Раньше реальный <img> (и, пока идёт загрузка, любой активный blurhash-<canvas>/LQIP-ThumbHash-<img>/сплошной цвет или shimmer-<span>) лежали внутри постоянного позиционирующего <span> — это мешало встраивать компонент в чужую вёрстку, которая ожидает владеть элементом напрямую. Теперь каждый вид плейсхолдера рисуется CSS-фоном (background-color/background-image) прямо на том же элементе, который затем покажет настоящее фото — до начала загрузки это отдельный элемент, который полностью заменяется (а не оборачивает) реальным <img>/<picture>. class/style/data-* и другие атрибуты теперь долетают до этого единственного реального элемента. Плавный кроссфейд «блюр просвечивает сквозь проявляющееся резкое фото» технически больше недостижим — переключение мгновенное; новый проп fadeIn (см. ниже) — другой, более простой эффект, а не замена старого.
  • Новый проп fadeIn у <VImage> (по умолчанию false) — опциональное плавное появление (opacity 0→1, ~0.3с) при монтировании.

1.1.6 ​

2026-09-12

  • v-lazy-img теперь использует общий пул IntersectionObserver вместо создания отдельного наблюдателя на каждый элемент.
  • layout без явного значения теперь получает тот же авто-расчёт sizes, что и layout="responsive".
  • Blurhash- и LQIP/thumbhash-плейсхолдеры больше не могут одновременно монтироваться при передаче обоих пропов — восстановлен единый приоритет плейсхолдеров.