Code Ready | Frontend
22.7K subscribers
1.13K photos
472 videos
17 files
783 links
Авторский канал по Frontend разработке.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3NJCKs

Реклама на бирже: https://telega.in/c/code_ready
Download Telegram
👩‍💻 Абсолютное позиционирование с заполнением области!

При position: absolute элемент не влияет на размеры родителя. Если контейнер не имеет высоты (контент не растягивает, высота не задана), то и растянутый overlay будет нулевой высоты, потому что сам контейнер нулевой, а не из-за схлопывания absolute.

Даём контекст позиционирования:
.container {
position: relative;
}


Теперь абсолютный слой можно растянуть по сторонам:
.overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}


Но короче и декларативнее:
.overlay {
position: absolute;
inset: 0;
}


🔥 inset: 0 делает то же, что 4 свойства, и отлично подходит для overlay-слоёв, масок и кликабельных зон, не требуя width/height и не создавая побочный overflow, если внутри ничего не выходит за границы.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍219🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Верстай быстрее и не теряться в длинных списках классов!

Tailwind CSS IntelliSense — расширение, которое кардинально улучшает работу с фреймворком, предоставляя автодополнение для классов и директив, подсветку синтаксиса и предпросмотр стилей по наведению, делая разработку намного быстрее и удобнее.

📣 Code Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍8🔥7🤝2
Если вы разработчик, вы уже участвуете в выборе и настройке облаков для клиентов. Обычно бесплатно для себя.
Itentis Cloud предлагает зарабатывать на этом системно.

Itentis Cloud - это изолированная и безопасная облачная платформа для бизнеса: масштабируемый и отказоустойчивый виртуальный датацентр, который разворачивается за пару кликов.

Как вы зарабатываете:

📌Вариант 1. Партнерская модель
Вы приводите компанию в Itentis Cloud. Клиент платит за облако, а вы получаете фиксированную долю с каждого платежа.

📌Вариант 2. Субаренда
Вы арендуете облако у Itentis Cloud и сдаете его своим клиентам по собственной цене.

Что это дает вам:
– дополнительный доход с текущих клиентов
– прозрачную схему: привели → настроили → сопровождаете → регулярно получаете деньги

Что получает клиент:
– российскую облачную платформу для бизнеса, построенную как изолированный виртуальный датацентр
- закрытие базовой задачи IaaS
- прозрачную модель для инженеров: понятная модель ресурсов, быстрый старт, возможность кастомной настройки под требования проекта
- совместимость с российской инфраструктурой
- настройку за несколько кликов

Подробности - на сайте Itentis Cloud.
Утечки памяти и деградация производительности из-за забытых обработчиков событий!

Модальное окно открывается и закрывается, initModal вызывается многократно, а обработчик события остаётся подписанным. В результате одно и то же событие начинает обрабатываться N раз, что напрямую бьёт по производительности при последующих срабатываниях.

Типичный пример:
function initModal() {
window.addEventListener("resize", onResize);
}

function onResize() {
console.log("resize");
}


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

Частая ошибка — потеря ссылки на обработчик:
element.addEventListener("click", () => {
console.log("click");
});


Такой обработчик невозможно корректно снять, потому что отсутствует reference на исходную функцию.

removeEventListener требует тот же объект функции, который использовался при подписке.

Корректный вариант:
function handleClick() {
console.log("click");
}

element.addEventListener("click", handleClick);


И при очистке:
element.removeEventListener("click", handleClick);


Часто незаметная ловушка — замыкания с тяжёлыми объектами:
function initModal() {
const modal = document.querySelector(".modal");
const bigData = Array.from({ length: 100_000 }, () => ({}));

function onResize() {
if (!modal) return;
modal.style.width = window.innerWidth + "px";
}

window.addEventListener("resize", onResize);
}


.modal удалён из DOM, но resize-обработчик остаётся подписанным, удерживая modal и bigData. Память не освобождается, логика продолжает выполняться при resize.

Правильный паттерн — явная инициализация и симметричная очистка:
function initModal() {
const modal = document.querySelector(".modal");

function onResize() {
if (!modal) return;
modal.style.width = window.innerWidth + "px";
}

window.addEventListener("resize", onResize);

return () => {
window.removeEventListener("resize", onResize);
};
}


🔥 Любая инициализация с обработчиками или фоновыми процессами должна иметь симметричную очистку.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1610👍8
❤️ На Хабре вышел крутой мини-гайд: «Верстаем сложный прогрессбар в 2026 году»!

В этой статье:
• Показан основной приём: один div + background-image с радиальным и коническим градиентами;
• Объяснено, как кастомизировать ширину, цвета и прозрачность через параметры градиентов;
• Добавлены визуальные эффекты;
• Рассмотрена управляемая переменная --progress, чтобы задавать прогресс в интерфейсе числом от 0 до 100;


🔊 Продолжайте читать на Habr!


📣 Code Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍10🤝7
Практика отладки: читаемые логи в DevTools!

При выводе массивов объектов в консоль стандартный console.log быстро теряет читаемость. Для структурированного представления данных стоит использовать console.table():
const bugs = [
{ id: 1, title: "CSS не грузится", status: "open" },
{ id: 2, title: "API 500", status: "fixed" },
{ id: 3, title: "Кнопка не реагирует", status: "open" }
];

console.table(bugs);


Данные отображаются в виде таблицы. В большинстве современных DevTools доступна сортировка по колонкам и удобный просмотр значений, что упрощает анализ массивов и API-ответов.

Для акцентирования внимания на важных событиях можно использовать стилизацию через спецификатор %c:
console.log(
"%cCRITICAL BUG DETECTED",
"font-size: 18px; font-weight: bold; color: red;"
);


Приём полезен для временной отладки и маркировки критических участков выполнения.

Чтобы структурировать поток сообщений в консоли, используйте группировку:
console.group("User Load Flow");
console.log("Запрос данных пользователя");
console.log("Запрос ролей");
console.groupEnd();


Группы упрощают навигацию по логам при анализе сложных сценариев и асинхронных процессов.

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

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥12👍9
19👍13🔥6😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Верстальщик? Фронтендер? Нет работы и заказов, а побаловать себя хочется?

Для тебя нашли канал с вакансиями по вёрстке и фронтенду, где:

▶️ Новые вакансии ежедневно
▶️ Работа из дома и в офисе
▶️ Любой уровень навыков

Прекрати ежедневно мониторить десятки сайтов ради копеечных заказов! Работай с проверенными клиентами🧑‍💻

Подписывайся – @job_webdev
👩‍💻 Управляем резиновым ресайзом одной строкой!

Пользователь может растянуть <textarea> как угодно, и это часто ломает layout, вылазит за контейнер, разваливает сетку, сдвигает кнопку отправки:
textarea {
resize: both;
}


Если ресайз в интерфейсе не предусмотрен, запретим его явно:
textarea {
resize: none;
}


Нужен только вертикальный ресайз (самый безопасный для формы)? Тогда так:
textarea {
resize: vertical;
}


🔥 Такая мелкая деталь, позволяет сохранять целостность интерфейса.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥10🤝81
This media is not supported in your browser
VIEW IN TELEGRAM
😎 JavaScript Airbnb Style Guide — суперполезное руководство по написанию JS кода!

Репозиторий охватывает правила структуры кода, работы с функциями, объектами, модулями и многое другое, помогая писать аккуратный и понятный код. Содержит чёткие примеры как лучше и, что стоит избегать в работе. Подходит как для новичков, так и для опытных разработчиков, которые хотят закрепить или повторить материал.

Оставляю ссылочку: GitHub 📱


📣 Code Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍9🤝92
📱 Сохранение текста в TXT-файл прямо в браузере!

Привет! В этом гайде создаём компактный интерфейс, который сохраняет введённый текст из textarea в скачиваемый TXT-файл.

Ключевые моменты:
• HTML: структура — textarea для текста, input для имени файла и кнопка загрузки.

• CSS: центрирование, карточный контейнер, скругления и аккуратная визуальная подача.

• JS: создание файла через Blob, безопасное имя и скачивание в один клик.


Такой инструмент отлично подойдёт для UI-демо, заметок, экспорта логов или быстрого сохранения текста в файл с минимальным интерфейсом.

📣 Code Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🤝9🔥8
😎 На Хабре вышла полезнейшая статья: «Практическое руководство по современным CSS-цветам — часть 2»!

В этой статье:
• Автор переводит и адаптирует вторую часть туториала по возможностям работы с цветами в CSS;
• Разбираются расширенные CSS-функции для создания гибких и адаптивных палитр;
• Показано, как с помощью относительных цветов и calc() делать светлые/тёмные варианты;
• Приведены примеры, в которых браузерные возможности CSS превосходят многие инструменты дизайна.


🔊 Продолжайте читать на Habr!


📣 Code Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍13🔥8
👩‍💻 Посимвольная загрузка с волновой анимацией!

Интерактивность не всегда требует сложных компонентов. Иногда достаточно правильно прописать движение.

Как работает:
каждый символ вынесен в отдельный <span>, что дает контроль над фазой анимации;

animation-delay через CSS-переменную создаёт ритм без дублирования ключевых кадров;

движение построено на transform, поэтому анимация не вызывает перекомпоновки;

изменение opacity визуального акцента активных цифр.


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

📣 Code Ready | #фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍11🔥9👎1
📂 Напоминалка для работы с JavaScript!

Например, let и const используются для корректного объявления переменных, map и forEach — для обработки массивов, а includes и split помогают при работе со строками.

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

Сохрани, чтобы не забыть!

📣 Code Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1311👍8
Синхронизация данных между вкладками!

Если у пользователя открыто несколько вкладок одного сайта, браузер позволяет им обмениваться сообщениями в пределах одного origin через стандартный BroadcastChannel API.

Создаём канал для обмена событиями:
const channel = new BroadcastChannel("app_sync");


Из одной вкладки отправляем событие в остальные:
channel.postMessage({
type: "LOGOUT"
});


В других вкладках подписываемся на входящие сообщения:
channel.onmessage = (event) => {
console.log(event.data);
};


Практический кейс — одновременный logout во всех вкладках приложения:
channel.onmessage = (event) => {
if (event.data.type === "LOGOUT") {
// Удаляем только auth-данные, без полного clear
localStorage.removeItem("access_token");
localStorage.removeItem("refresh_token");
location.reload();
}
};


Функция logout в текущей вкладке должна сначала выполнить локальную очистку, а затем уведомить остальные вкладки:
function logout() {
localStorage.removeItem("access_token");
localStorage.removeItem("refresh_token");

channel.postMessage({ type: "LOGOUT" });
}


Работает нативно, поддерживается современными браузерами, описан в HTML Living Standard.

🔥 Почему BroadcastChannel, а не localStorage events: это нативный event-bus без побочных записей в localStorage, не требующий триггерных ключей и дающий более чистую, предсказуемую модель событий.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🤝8🔥74
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Crockford — материалы человека, который сыграл ключевую роль в развитии JS!

Здесь собраны статьи и материалы программиста, который сыграл огромную роль в развитии JS и придумал JSON. Крокфорд объясняет, где в JS сильные стороны, где опасные места и какие подходы реально работают в долгосрочной перспективе. Это хороший ресурс, если ты уже знаешь основы и хочешь лучше понять логику его дизайна и то, как писать более надёжный и понятный код.

📌 Оставляю ссылочку: crockford.com

📣 Code Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥8🤝8