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
👩‍💻 Разрешаем выбор нескольких значений!

С атрибутом 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
Как легко добавить фон, эффект или оверлей позади элемента?

Часто нужно подложить декоративный слой под элемент, но при этом не менять разметку и не добавлять лишние div. Псевдоэлемент с отрицательным z-index решает задачу.

Создаём локальный стек наложения, чтобы слой оставался только внутри компонента:
.card {
position: relative;
z-index: 0;
}


Теперь можно безопасно увести псевдоэлемент назад:
.card::before {
position: absolute;
inset: 0;
z-index: -1;
}


Так слой окажется позади содержимого, но не исчезнет под соседними блоками и фоном страницы.

Можно использовать это для градиентов, свечения, теней, интерактивных эффектов и сложных декоративных подложек:
.card::before {
background: radial-gradient(circle, #4da3ff, transparent);
}


🔥 В итоге получаем некий фоновый слой компонента без лишней разметки и без проблем со слоями.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍21🔥149
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Teamtreehouse — базовый курс по основам языка JS!

Структурированная программа обучения, охватывающая ключевые концепции языка: синтаксис, условные конструкции, функции и основы отладки. Материал подаётся через видеоуроки и задания, что позволяет закреплять теорию на практике и формировать базу для дальнейшего изучения веб-разработки.

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

📣 Code Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥109👎2🤝2
ResizeObserver — отслеживание изменения размеров элементов!

ResizeObserver — нативный Web API для отслеживания изменения размеров DOM-элементов. Позволяет реагировать на пересчёт layout без window.resize, опроса размеров и сторонних библиотек.

Особенно полезен для адаптивных компонентов, canvas, виртуализации и сложных UI, где размер элемента меняется независимо от окна.

Создаём наблюдатель:
const observer = new ResizeObserver(entries => {
entries.forEach(entry => {
console.log(entry.contentRect.width, entry.contentRect.height);
});
});


Колбэк вызывается после пересчёта layout в отдельной фазе доставки уведомлений (обычно до этапа отрисовки). Уведомления могут батчиться браузером.

Если внутри колбэка менять размеры наблюдаемого элемента, можно получить предупреждение: ResizeObserver loop limit exceeded или ResizeObserver loop completed with undelivered notifications. Это защита от бесконечных циклов перерасчёта.

Пример 1 — отслеживание размера элемента:
const box = document.querySelector('.box');

observer.observe(box);


entry.contentRect содержит размеры content box — области содержимого без padding, border и margin.

Для более точных измерений лучше использовать contentBoxSize или borderBoxSize.

Пример 2 — адаптация UI под ширину контейнера:
const container = document.querySelector('.container');

const responsiveObserver = new ResizeObserver(entries => {
const { width } = entries[0].contentRect;

if (width < 500) {
container.classList.add('compact');
} else {
container.classList.remove('compact');
}
});

responsiveObserver.observe(container);


Подходит для container-based адаптивности, когда поведение зависит от размера контейнера, а не viewport. (Для чисто стилевых задач также можно использовать CSS Container Queries.)

Пример 3 — работа с несколькими элементами:
document.querySelectorAll('.widget')
.forEach(el => observer.observe(el));


Один ResizeObserver может отслеживать любое количество элементов — браузер оптимизирует доставку уведомлений.

Пример 4 — точные размеры через borderBoxSize:
const preciseObserver = new ResizeObserver(entries => {
for (const entry of entries) {
const size = Array.isArray(entry.borderBoxSize)
? entry.borderBoxSize[0]
: entry.borderBoxSize;

console.log(size.inlineSize, size.blockSize);
}
});


borderBoxSize учитывает padding и border (аналог box-модели border-box). В современных браузерах поддержка хорошая, но исторически API различался, поэтому часто делают фоллбек на contentRect.

Пример 5 — прекращение наблюдения:
observer.unobserve(box);   // перестать следить за конкретным элементом
observer.disconnect(); // отключить наблюдатель полностью


Важно отключать наблюдение для удалённых элементов, чтобы избежать лишних ссылок и потенциальных утечек памяти.

🔥 ResizeObserver — базовый инструмент для построения адаптивных компонентов, реагирующих на реальные размеры контейнера, а не только на размер окна.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1910🤝10
👩‍💻 Указываем, по каким линиям обрезать вертикальные отступы текста.

Свойство text-box-edge задаёт, по каким визуальным линиям текста нужно обрезать вертикальные края блока, когда используется text-box-trim. Это помогает более точно контролировать высоту текстового контейнера.

Границы текста можно задать разными способами.
Верхняя граница (top-edge):
• cap — по верхушкам заглавных букв;
• ex — по высоте строчных букв;
• text — по фактическому верху видимых символов.
Нижняя граница (bottom-edge):
• alphabetic — по базовой линии текста;
• text — по самой нижней части символов (включая «хвосты»).


Отлично подходит для числовых полей, дат и диапазонов, делая валидацию более наглядной.

📣 Code Ready | #свойство
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥119🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Нужно быстро понять, когда и как менялся код?

Git History — показывает историю изменений прямо в VS Code: коммиты по файлу, авторов правок, различия между версиями и изменения строк. Можно быстро посмотреть старый код, найти причину бага или понять логику изменений.

📣 Code Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍10🤝10
8 марта уже на горизонте. Цветы — это база. А что добавим к релизу?

Если хочется сделать красивый апгрейд праздника, присмотритесь к дизайнерским игрушкам от Super Toys!

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

Мы собрали специальную праздничную подборку — чтобы вы закрыли задачу по подарку быстро и красиво!

Прокачайте 8 марта до версии Pro!

Реклама. ООО "НОВЫЕ МЕДИА". ИНН 7813407148. erid: 2W5zFGjfcYZ
👍1
Убираем задержку клика и лишние тап-эффекты!

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

Свойство touch-action позволяет явно указать браузеру, какие жесты разрешены, и тем самым улучшить отзывчивость интерфейса.

Если элемент — обычная кнопка или ссылка, можно оставить только базовое взаимодействие:
.button {
touch-action: manipulation;
}


В большинстве современных браузеров это убирает ожидание двойного тапа и делает нажатие более мгновенным (особенно для кастомных контролов).

Это полезно для кнопок, карточек, меню и любых интерактивных элементов, где важна отзывчивость:
.card {
touch-action: manipulation;
}


Для элементов с горизонтальным свайпом можно разрешить только нужное направление:
.slider {
touch-action: pan-x;
}


🔥 В итоге интерфейс ощущается быстрее, уменьшаются случайные зумы и лишние жесты, без JS. Используйте точечно на интерактивных элементах.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝2014👍9🔥5
☕️ Полезную статью нашел на Хабре: «Что происходит внутри Angular и React при решении одних и тех же задач»!

В этой статье:
• Наглядно разобрано, как оба инструмента на самом деле создают и обновляют DOM — Virtual DOM vs Incremental DOM;
• Показано, что происходит под капотом при рендерах, эффектах, асинхронности и архитектуре приложений;
• Объясняется, почему одинаковые задачи в React и Angular приводят к разным затратам ресурсов, сборке и поведению интерфейса.


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


📣 Code Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍159🤝9🔥1
👩‍💻 Полноэкранная прокрутка с фиксацией секций!

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

Как работает:
контейнер получает scroll-snap-type, который включает режим фиксации прокрутки;

каждая секция занимает высоту экрана через 100vh;

scroll-snap-align указывает точку прилипания;

режим mandatory гарантирует чёткую остановку на каждом экране.


Это чистый нативный способ собрать лендинг, презентационный экран или onboarding без JS.

📣 Code Ready | #фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥7