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
👩‍💻 3D-лента изображений с фокусом при наведении!

В этой фишке мы создаём 3D-ленту изображений с глубиной, перспективой и движением.

Как работает:
используется единая адаптивная единица --index, которая масштабируется;

perspective задаёт глубину;

кастомный cubic-bezier формирует плавное движение без дёрганий;

вся интерактивность работает через transform и filter.


Такой приём отлично подходит для галерей и портфолио, подборок контента, hero-блоков.

📣 Code Ready | #фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍10🔥7👎3
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Строки с Tailwind-классами становятся слишком длинными?

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

📣 Code Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍11🤝7
📱 Адаптивная шапка при прокрутке!

Привет! В этом гайде создаём фиксированную шапку, которая адаптируется к прокрутке страницы: сжимается и автоматически скрывается при скролле вниз, возвращаясь при движении вверх.

Ключевые моменты:
• HTML: структура шапки с навигационным меню.

• CSS: плавные анимации, эффект сжатия и скрытия через классы состояния.

• JS: определение направления прокрутки и переключение классов scrolled и hide.


Компонент подходит для интерфейсов с фиксированной навигацией, где важно экономить пространство и улучшать восприятие контента при активной прокрутке страницы.

📣 Code Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍98
👩‍💻 Быстро и просто обнуляем специфичность селекторов!

Одна из самых частых причин, почему стили не применяются, это разросшаяся специфичность селекторов.

Со временем каждый новый селектор должен быть сложнее предыдущего:
.header .nav .item a {
color: red;
}


Такой код работает, но он повышает специфичность и делает дальнейшие переопределения всё сложнее.

В CSS есть способ этого избежать, использовать :where():
:where(.header .nav .item a) {
color: red;
}


Особенность :where() в том, что он всегда имеет нулевую специфичность, независимо от того, что находится внутри.

Это значит, что правило применяется, но никогда не мешает более конкретным стилям компонентов. Именно поэтому :where() идеально подходит для базовых и системных стилей:
:where(button) {
font: inherit;
}


:where(a) {
color: inherit;
text-decoration: none;
}


🔥 Такие правила не ломают компоненты, легко переопределяются и позволяют обходиться без !important.

📣 Code Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2615🔥10
👩‍💻 Сегментированный переключатель состояний!

Во многих интерфейсах нужен простой способ переключать состояние: табы, фильтры, режимы. В этом приёме переключатель собирается на html/css, где radio-кнопки становятся источником состояния.

Как работает:
группа radio гарантирует, что активен всегда только один сегмент;

индикатор - отдельный слой, который перемещается через transform, не влияя на layout;

grid задаёт геометрию элементов;

один и тот же state управляет и положением индикатора, и цветом текста.


Такой прием легко масштабируется и отлично ложится в продакшн-код.

📣 Code Ready | #фишка
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍10🔥8🤝2
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Нужно быстро проверить API?

Postman — инструмент для работы с API прямо из VS Code: отправка запросов, просмотр ответов, работа с headers, body, токенами и коллекциями. Удобно тестировать эндпоинты, проверять ответы и разбираться в API ещё до интеграции во фронт. Экономит время и помогает быстрее понять, что приходит с сервера.

📣 Code Ready | #vscode
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍14🤝84
📂 Напоминалка для работы с CSS-псевдоклассами!

Например, :first-child применяется к элементу, который является первым дочерним элементом родителя, а :first-of-type выбирает первый элемент указанного типа среди дочерних.

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

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

📣 Code Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2613🤝8
Записываем звук с микрофона в браузере!

Современные браузеры позволяют писать аудио без сторонних библиотек, используя MediaRecorder API.

Для начала запрашиваем у пользователя доступ к микрофону (работает только в HTTPS или localhost окружении):
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });


Перед созданием рекордера желательно проверить поддерживаемый формат:
const mimeType = MediaRecorder.isTypeSupported('audio/webm;codecs=opus')
? 'audio/webm;codecs=opus'
: 'audio/webm';


Создаём рекордер для записи аудио:
const recorder = new MediaRecorder(stream, { mimeType });


Подготавливаем массив для аудио-чанков и подписываемся на событие dataavailable:
(срабатывает минимум при stop(), а при использовании timeslice — периодически):
const chunks = [];

recorder.ondataavailable = (e) => {
if (e.data && e.data.size > 0) {
chunks.push(e.data);
}
};


Запускаем запись (при необходимости можно передать timeslice, например recorder.start(1000)):
recorder.start();


Останавливаем запись, например, через 5 секунд:
setTimeout(() => {
recorder.stop();
}, 5000);


После остановки записи собираем аудио в единый файл и воспроизводим его:
recorder.onstop = () => {
const blob = new Blob(chunks, { type: mimeType });
const url = URL.createObjectURL(blob);

const audio = document.createElement('audio');
audio.controls = true;
audio.src = url;

document.body.append(audio);


Воспроизведение может быть ограничено политикой autoplay:
  audio.play().catch(() => {});


Освобождаем ресурсы после использования:
  audio.onended = () => {
URL.revokeObjectURL(url);
};

stream.getTracks().forEach(track => track.stop());
};


🔥 Формат аудио зависит от браузера — при необходимости проверяйте поддержку через MediaRecorder.isTypeSupported() и задавайте mimeType явно.

📣 Code Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥169🤝9👍3
👍17🤝9🔥8👎2
📱 Анимация загрузки с эффектом размытия!

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

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

• CSS: blur-эффект, затемняющий оверлей и центрирование контента.

• JS: анимация через requestAnimationFrame, масштабирование значений.


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

📣 Code Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍1311🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Interview Questions — сборник вопросов для подготовки к собеседованиям!

Отличный репозиторий с большим набором вопросов по разным направлениям разработки: JavaScript, HTML, CSS, React, Node.js и множеству других тем. Вопросы с примерами, объяснениями и ссылками на ресурсы для углублённого изучения. Помогает освежить знания по ключевым темам стеков, которые встречаются в проектах.

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


📣 Code Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2010🔥8👎4🤝1