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) — опциональное плавное появление (opacity0→1, ~0.3с) при монтировании.
1.1.6
2026-09-12
v-lazy-imgтеперь использует общий пулIntersectionObserverвместо создания отдельного наблюдателя на каждый элемент.layoutбез явного значения теперь получает тот же авто-расчётsizes, что иlayout="responsive".- Blurhash- и LQIP/thumbhash-плейсхолдеры больше не могут одновременно монтироваться при передаче обоих пропов — восстановлен единый приоритет плейсхолдеров.