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
Что же выведет консоль?
Anonymous Quiz
17%
A
26%
B
37%
C
20%
D
🔥17👍10🤝71
Универсальный hover-оверлей без скриптов и лишних обёрток!

Нужен стабильный hover-оверлей для родителя, который работает над всей карточкой и не конфликтует со сложной вложенностью, absolute-элементами и z-index.
.card:hover::before { background: rgba(0,0,0,.05); }


Иногда визуальный hover выглядит рвано из-за наложений или пересечений. Оверлей может помочь справиться с этой проблемой:
.card { isolation: isolate; }


Создаём новый stacking context, чтобы изолировать слои внутри карточки и избежать конфликтов с внешними z-index и blending.
.card::before { z-index: 1; border-radius: inherit; }
.card > * { position: relative; z-index: 2; }


🔥 Теперь оверлей гарантированно выше фона, но ниже контента, не ломает клики благодаря pointer-events: none и корректно наследует скругления.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥11👍8
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Tutorial Republic — подробный и практичный справочник по JavaScript!

Это полноценный справочник с чёткими объяснениями, примерами кода и интерактивными демо. Каждая тема сопровождается примерами, которые можно сразу попробовать и понять, как именно работает та или иная конструкция. Очень полезно и новичкам, и тем, кто хочет освежить знания или быстро найти пример по конкретной задаче.

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

📣 Code Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍169🔥8
Event Delegation — один обработчик вместо десятков!

Частая ошибка — навешивать обработчик на каждый элемент списка. Это усложняет код, требует повторных подписок при обновлении DOM и не работает для динамически добавленных элементов. Гораздо надёжнее использовать делегирование событий — один обработчик на общем родителе.

Обработчик на каждый элемент:
document.querySelectorAll('.list .item button').forEach(btn => {
btn.addEventListener('click', () => {
console.log('Clicked:', btn.dataset.id);
});
});


Такой подход не масштабируется: новые элементы остаются без обработки, а при повторной инициализации легко получить дубли подписок.

Делегирование через родителя:
const list = document.querySelector('.list');

list.addEventListener('click', (e) => {
const button = e.target.closest('button');
if (!button || !list.contains(button)) return;

console.log('Clicked:', button.dataset.id);
});


События в DOM всплывают вверх по дереву (bubbling), поэтому родитель может перехватить клик. Через closest() мы определяем фактический источник действия, даже если клик был по вложенному элементу внутри кнопки.

Работает с динамическими элементами:
list.insertAdjacentHTML('beforeend', `
<li class="item">
<button data-id="10">New item</button>
</li>
`);


Новый элемент автоматически обрабатывается существующим обработчиком — дополнительных подписок не требуется.

🔥 Подход не применим к событиям без всплытия (например, focus, blur), может конфликтовать с точечным использованием stopPropagation() и требует осознанного выбора контейнера, чтобы не перехватывать лишние события.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1511👍9🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Нужно запустить тесты в редакторе?

Jest — расширение для VS Code, которое показывает статус тестов рядом с кодом и позволяет запускать их по одному клику: весь файл, отдельный тест или даже конкретный кейс. Подсветка тестов и быстрый переход к проблемному месту.

📣 Code Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1810🤝7👍3
👩‍💻 Тень по форме объекта вместо прямоугольника!

Если использовать box-shadow для изображений, тень отображается по рамке элемента, а не по реальной форме картинки. В результате прозрачные области тоже получают тень.

Как работает:
box-shadow создаёт тень вокруг bounding-box элемента;

filter: drop-shadow() анализирует альфа-канал изображения;

прозрачные пиксели не учитываются, поэтому тень повторяет контур объекта;


Это простой способ сделать тени визуально более естественными без дополнительных обёрток и сложной графики.

📣 Code Ready | #фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥13👍11🤝3👎1
📂 Напоминалка по методам строк!

Например, charAt() возвращает символ по индексу, includes() проверяет наличие подстроки, а slice() извлекает часть строки без изменения оригинала.

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

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

📣 Code Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1812👍11🤝3
👩‍💻 Поля формы, которые сами подстраиваются под текст!

CSS теперь умеет автоматически менять размер input, textarea и select в зависимости от содержимого, раньше для этого писали скрипты.

Просто добавьте:
input, textarea, select {
field-sizing: content;
}


Теперь ширина input и select, а высота textarea растут вместе с содержимым. У select размер подстраивается под выбранный пункт.

Чтобы поля не ломали адаптив и не вылезали за контейнер, ограничиваем максимальный размер и задаём минимальный:
input, textarea, select {
field-sizing: content;
min-width: 8ch;
max-width: 100%;
}


Работает и для textarea, она расширяется по мере ввода, без resize-хэндлов и скриптов:
textarea {
field-sizing: content;
}


Поддержка пока не во всех браузерах.

🔥 В итоге форма выглядит аккуратно и реагирует на пользователя без JS.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3010🔥10👎1
This media is not supported in your browser
VIEW IN TELEGRAM
👍 HTMLBOOK — удобный справочник по HTML и CSS на русском!

Ресурс для изучения вёрстки, где собрана база по HTML, CSS и созданию сайтов. Здесь можно быстро разобраться в тегах, атрибутах, стилях, структуре страниц и типовых приёмах оформления. Материалы написаны простым языком, есть самоучители, примеры и пояснения, поэтому сайт удобно использовать как шпаргалку во время работы.

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

📣 Code Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥13🤝93
🔥16👍9🤝6
Что же выведет консоль?
Anonymous Quiz
34%
A
47%
B
10%
C
10%
D
👍24🔥12🤝93
❤️ Полезная статью на Хабре: «Интересные HTML и CSS фичи, которые почему-то обходят стороной»

В этой статье:
• Показано, как упростить разметку и логику форм без лишнего JS;
• Разобраны малоиспользуемые возможности для аккуратной типографики, позиционирования и валидации;
• На примерах видно, как писать чище, короче и гибче, используя то, что уже давно есть в стандартах.


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


📣 Code Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1810🔥10🤝2
Определяем готовность DOM через DOMContentLoaded!

DOMContentLoaded срабатывает после разбора HTML и построения DOM — можно безопасно запускать клиентский код, не дожидаясь полной загрузки страницы. Не ждёт изображения и другие ресурсы, но может задерживаться блокирующими CSS и синхронными скриптами.

Подписка на событие:
document.addEventListener('DOMContentLoaded', () => {
console.log('DOM готов');
});


Это стандартная точка старта клиентской логики, когда элементы уже существуют в документе и с ними можно безопасно работать.

Событие load на объекте window срабатывает позже — после загрузки всех зависимых ресурсов страницы (изображений, стилей, шрифтов, iframe и т.д.):
window.addEventListener('load', () => {
console.log('Страница полностью загружена');
});


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

Если скрипт подключается динамически или выполняется после загрузки документа, событие DOMContentLoaded может уже произойти. В этом случае следует проверить document.readyState:
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}

function init() {
console.log('Инициализация');
}


Такой паттерн гарантирует корректный запуск независимо от момента подключения скрипта.

🔥 DOMContentLoaded срабатывает один раз за жизненный цикл документа и является базовой точкой запуска клиентского кода сразу после готовности структуры страницы.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝15👍1310
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ JS Basic Tasks — практический задачник по JavaScript и DOM!

Репозиторий содержит набор заданий и учебный проект по работе с JavaScript, интерфейсами и браузерным API. Здесь последовательная практика: манипуляции с DOM, события, формы, работа с данными и построение интерактивных элементов. Отличный вариант, если хочешь попрактиковаться.

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


📣 Code Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19👍11🤝101
👩‍💻 Разрешаем выбор нескольких значений!

С атрибутом multiple можно выбрать несколько имейлов или файлов в <input>, либо несколько вариантов в списке <select>.

В зависимости от элемента поведение отличается:
• для file — можно загрузить несколько файлов одновременно;
• для select — становится доступен множественный выбор пунктов списка;
• для email — можно ввести несколько адресов через запятую.


multiple делает интерфейс гибче и избавляет пользователя от повторяющихся действий при работе с формами.

📣 Code Ready | #атрибут
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1712👍12😁1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Не хочется каждый раз писать базовую структуру вручную?

Simple React Snippets — добавляет быстрые шаблоны для React: функциональные компоненты, импорт React, хуки, export по умолчанию и другие часто используемые конструкции. Вводишь короткое сокращение, получаешь готовый каркас компонента.

📣 Code Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥12🤝9
👩‍💻 Заголовок секции, который остаётся сверху при прокрутке!

На длинных страницах пользователь легко теряет контекст, какой раздел он сейчас читает.

Как работает:
position: sticky фиксирует элемент относительно области прокрутки, но только в пределах родительской секции;

top: 0 задаёт точку, в которой заголовок начинает «прилипать» к верху окна;

при появлении следующей секции предыдущий заголовок автоматически вытесняется новым;

эффект полностью декларативный и не требует отслеживания прокрутки.


Это простой способ улучшить навигацию и читаемость длинных страниц без дополнительной логики.

📣 Code Ready | #фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍11🤝11
📂 Шпаргалка по методам поиска в строках!

Например, startsWith(), endsWith() и includes() используются для логических проверок содержимого строки, а indexOf() и lastIndexOf() — для получения позиции первого и последнего вхождения подстроки.

На изображении собраны базовые методы строкового поиска, которые покрывают большинство повседневных задач при работе с текстом и данными.

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

📣 Code Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍109🤝3