HTMLImageElement.decode() — подготовка изображения до появления в DOM!
При динамической подстановке изображений часто возникает ситуация, когда элемент уже добавлен в DOM, но браузер ещё не завершил декодирование изображения. В результате пользователь может увидеть пустую область, задержку появления контента или заметное изменение содержимого после завершения подготовки картинки.
Для таких случаев существует метод
const image = new Image();
image.src = '/images/photo.jpg';
await image.decode();
После установки
После успешного выполнения
const image = new Image();
image.src = '/images/photo.jpg';
await image.decode();
document.body.append(image);
В таком случае браузеру не требуется выполнять декодирование в момент первого отображения элемента, что помогает избежать визуальных скачков при динамическом обновлении интерфейса.
Метод особенно полезен при динамической замене изображений:
const preview = document.querySelector('.preview');
const nextImage = new Image();
nextImage.src = '/images/next.jpg';
await nextImage.decode();
preview.replaceWith(nextImage);
Новая картинка будет установлена только после подготовки браузером, поэтому замена происходит без промежуточного состояния, связанного с декодированием изображения.
Важно учитывать разницу между загрузкой и декодированием. Событие
image.onload = () => {
console.log('Изображение загружено');
};
await image.decode();
Эти механизмы решают разные задачи и могут использоваться вместе в зависимости от требований интерфейса.
При ошибке загрузки или невозможности декодировать изображение
try {
await image.decode();
} catch (error) {
console.error('Не удалось подготовить изображение', error);
}
Важно учитывать, что
<img src="/images/photo.jpg" width="800" height="600">
🔥
📣 Code Ready | #практика
При динамической подстановке изображений часто возникает ситуация, когда элемент уже добавлен в DOM, но браузер ещё не завершил декодирование изображения. В результате пользователь может увидеть пустую область, задержку появления контента или заметное изменение содержимого после завершения подготовки картинки.
Для таких случаев существует метод
decode(), который позволяет дождаться момента, когда изображение будет декодировано браузером и готово к безопасному отображению. Создадим объект изображения:const image = new Image();
image.src = '/images/photo.jpg';
await image.decode();
После установки
src браузер начинает загрузку ресурса. Метод decode() не является механизмом загрузки изображения — он ожидает завершения загрузки и последующего декодирования, чтобы браузер не выполнял эту работу непосредственно в момент первого отображения.После успешного выполнения
Promise изображение можно добавлять в DOM:const image = new Image();
image.src = '/images/photo.jpg';
await image.decode();
document.body.append(image);
В таком случае браузеру не требуется выполнять декодирование в момент первого отображения элемента, что помогает избежать визуальных скачков при динамическом обновлении интерфейса.
Метод особенно полезен при динамической замене изображений:
const preview = document.querySelector('.preview');
const nextImage = new Image();
nextImage.src = '/images/next.jpg';
await nextImage.decode();
preview.replaceWith(nextImage);
Новая картинка будет установлена только после подготовки браузером, поэтому замена происходит без промежуточного состояния, связанного с декодированием изображения.
Важно учитывать разницу между загрузкой и декодированием. Событие
load сообщает о завершении загрузки ресурса, а decode() отвечает за готовность изображения к отображению без дополнительной подготовки в момент рендера. Например:image.onload = () => {
console.log('Изображение загружено');
};
await image.decode();
Эти механизмы решают разные задачи и могут использоваться вместе в зависимости от требований интерфейса.
При ошибке загрузки или невозможности декодировать изображение
Promise будет отклонён:try {
await image.decode();
} catch (error) {
console.error('Не удалось подготовить изображение', error);
}
Важно учитывать, что
decode() не решает проблему layout shift (CLS), если размеры изображения заранее неизвестны. Для предотвращения скачков интерфейса рекомендуется задавать размеры через width / height или использовать aspect-ratio. Например:<img src="/images/photo.jpg" width="800" height="600">
decode() широко применяется в современных веб-интерфейсах: галереях, слайдерах, редакторах изображений и компонентах с динамическим обновлением контента, где важно контролировать момент появления изображения.🔥
HTMLImageElement.decode() позволяет синхронизировать отображение изображения с процессом его подготовки браузером и избежать визуальных артефактов при динамическом обновлении DOM.📣 Code Ready | #практика
Дедлайны горят, а твои глаза уже нет. Что делать, если ты за#бался и хочется просто залипать в телефоне?
И вроде понимаешь, что НАДО, но от этого еще больше сопротивление.
Если близкие думают, что ты зажрался, а тебе и самому от себя уже тошно, но как себя взбодрить – непонятно, советую посмотреть вот что: https://t.me/Manifestans
Ты 100% себя узнаешь, а значит 100% получишь пользу от того, что там увидишь!
Если ты еще не собрал пожитки и не ушел отшельником в лес – есть шанс тебя оживить и вернуть эмоции и интерес к жизни.
Кликай сюда и начинай приходить в себя.
И вроде понимаешь, что НАДО, но от этого еще больше сопротивление.
Если близкие думают, что ты зажрался, а тебе и самому от себя уже тошно, но как себя взбодрить – непонятно, советую посмотреть вот что: https://t.me/Manifestans
Ты 100% себя узнаешь, а значит 100% получишь пользу от того, что там увидишь!
Если ты еще не собрал пожитки и не ушел отшельником в лес – есть шанс тебя оживить и вернуть эмоции и интерес к жизни.
Кликай сюда и начинай приходить в себя.
Добавляем дополнительную информацию с помощью тега <small>!
Тег
Для чего <small> подойдёт идеально:
• пояснения;
• комментарии;
• дисклеймеры;
• предостережения;
• копирайт;
• информация о лицензии;
• прочая правовая информация.
Важно:
📣 Code Ready | #атрибут
Тег
<small> используется для отображения второстепенного текста, который имеет меньшее значение по сравнению с основным содержимым. Он подходит для информации, которая полезна пользователю, но не является частью основного сообщения.Для чего <small> подойдёт идеально:
• пояснения;
• комментарии;
• дисклеймеры;
• предостережения;
• копирайт;
• информация о лицензии;
• прочая правовая информация.
Важно:
<small> имеет семантическое значение, а не просто уменьшает размер текста. Для изменения визуального размера обычного текста лучше использовать CSS.📣 Code Ready | #атрибут
💾 Services Section – карточки с выдвигающимся фоном и композицией из четырех картинок-сегментов. В активном состоянии цвет текста становится ярче.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
🖥 Health Analytics App – дизайн для мобильного приложения с аналитикой здоровья. Основные черты – выдержанный стиль, насыщенные холодные тона, контрасты и отсутствие скругленных углов.
Сайтодел | #макет #figma
Сайтодел | #макет #figma
💀 Пароль, который удаляет всё содержимое смартфона
В США впервые возбудили уголовное дело из-за функции самоуничтожения смартфона.
Чувак вместо пароля назвал агентам специальный код GrapheneOS — телефон мгновенно стер все данные вместе с eSIM, оставив силовиков ни с чем.
Теперь мужчину обвиняют в уничтожении доказательств и воспрепятствовании законному изъятию имущества. Максимальное наказание — до 5 лет тюрьмы.
При этом защита утверждает, что ордера на обыск не было, а просьбы вызвать адвоката проигнорировали.
Стартаперы, ловите идею для приложения 😎
В США впервые возбудили уголовное дело из-за функции самоуничтожения смартфона.
Чувак вместо пароля назвал агентам специальный код GrapheneOS — телефон мгновенно стер все данные вместе с eSIM, оставив силовиков ни с чем.
Теперь мужчину обвиняют в уничтожении доказательств и воспрепятствовании законному изъятию имущества. Максимальное наказание — до 5 лет тюрьмы.
При этом защита утверждает, что ордера на обыск не было, а просьбы вызвать адвоката проигнорировали.
Стартаперы, ловите идею для приложения 😎
RSS дайджест за 31 июля готов и сохранён в
🤖 RSS Дайджест — 31 июля 2026
───
🤖 AI/LLM
• Anthropic: ИИ-модели взломали 3 компании — во время security tests
• Minimax-H3: видеомодель вышла, open weights скоро
• LG AI Research: K-EXAONE 2.0 750B — корейская модель
• Inkling-Small-276B-12B — новая модель от thinkingmachines
• Бенчмарки не работают?
🤖 Robotics
• Gemini Robotics 2 — Google DeepMind
🛠 Tech
• Stacked PRs теперь в GitHub
• Google: AI исправила в Chrome больше багов за июнь, чем за 2 года
• Krebs: Don't buy that TV streaming stick
🍎 Apple
• Apple: значительные supply constraints
• Gaming slowdown и App Store ударили по services
• Reddit: solid quarter, но AI давит
───
Источники: TechCrunch, HN, r/LocalLLaMA
data/digest-2026-07-31.md.🤖 RSS Дайджест — 31 июля 2026
───
🤖 AI/LLM
• Anthropic: ИИ-модели взломали 3 компании — во время security tests
• Minimax-H3: видеомодель вышла, open weights скоро
• LG AI Research: K-EXAONE 2.0 750B — корейская модель
• Inkling-Small-276B-12B — новая модель от thinkingmachines
• Бенчмарки не работают?
🤖 Robotics
• Gemini Robotics 2 — Google DeepMind
🛠 Tech
• Stacked PRs теперь в GitHub
• Google: AI исправила в Chrome больше багов за июнь, чем за 2 года
• Krebs: Don't buy that TV streaming stick
🍎 Apple
• Apple: значительные supply constraints
• Gaming slowdown и App Store ударили по services
• Reddit: solid quarter, но AI давит
───
Источники: TechCrunch, HN, r/LocalLLaMA
💾 CSS Single Element Goey Spinner – лоадер из "жидких" капель, которые перетекают друг в друга по направлению движения. Лучше всего будет выглядеть на белом фоне.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
🎨 Цветовая палитра макета "Restaurant Reversion App"
⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
HEX | RGB #EDEDE5 | rgb(237, 237, 229)#F27BF1 | rgb(242, 123, 241)#8D8CF4 | rgb(141, 140, 244)⚠️ Цвет копируется одним кликом!
Сайтодел | #палитра
🐙 Phaser – фреймворк с открытым исходным кодом для создания браузерных игр. Визуализация основана на Canvas и WebGL, а рендеринг – на Pixi.js.
Сайтодел | #репозиторий #github
Сайтодел | #репозиторий #github
This media is not supported in your browser
VIEW IN TELEGRAM
💾 Seamless SVG Text – изображение в формате SVG, которое движется по кругу. Здесь сделан плавный переход между правой и левой частями окружности.
Сайтодел | #сниппет #css
Сайтодел | #сниппет #css
⌨️ Оживляем код: первые шаги в ООП на Python
Приглашаем на открытый урок.
🗓 03 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Pyhon-разработчик».
На занятии вы узнаете:
✔️ Что такое класс и объект, и зачем они нужны.
✔️ Как создавать свои типы данных с атрибутами и методами.
✔️ Как объединять данные и логику внутри класса.
✔️ Как применить ООП на простом практическом примере.
🔗 Ссылка на регистрацию: https://otus.pw/r7ks/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Приглашаем на открытый урок.
🗓 03 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Pyhon-разработчик».
На занятии вы узнаете:
✔️ Что такое класс и объект, и зачем они нужны.
✔️ Как создавать свои типы данных с атрибутами и методами.
✔️ Как объединять данные и логику внутри класса.
✔️ Как применить ООП на простом практическом примере.
🔗 Ссылка на регистрацию: https://otus.pw/r7ks/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576