Локальная обработка файлов в браузере — быстрый предпросмотр!
Выполняем валидацию файла и мгновенно формируем его превью — все операции происходят локально в браузере, без передачи данных на сервер.
Шаг 1 — получаем выбранный файл:
Шаг 2 — создаём
Шаг 3 — реагируем, когда чтение завершено:
Шаг 4 — читаем файл, когда пользователь выбирает его:
Шаг 5 — универсальная мини-утилита для превью:
Пример использования:
🔥 Подходит для: локального предпросмотра изображений, предварительной проверки ограничений, улучшения UX загрузки файлов и минимизации лишних серверных обращений.
📣 Code Ready | #практика
Выполняем валидацию файла и мгновенно формируем его превью — все операции происходят локально в браузере, без передачи данных на сервер.
Шаг 1 — получаем выбранный файл:
const input = document.querySelector('#file');Шаг 2 — создаём
FileReader для чтения локального файла:const reader = new FileReader();
Шаг 3 — реагируем, когда чтение завершено:
reader.onload = () => {
console.log('Тип:', currentFile.type);
console.log('Размер:', currentFile.size);
showPreview(reader.result);
};Шаг 4 — читаем файл, когда пользователь выбирает его:
let currentFile = null;
input.addEventListener('change', () => {
const file = input.files[0];
if (!file) return;
currentFile = file;
reader.readAsDataURL(file);
});
Шаг 5 — универсальная мини-утилита для превью:
function readFilePreview(file, cb) {
const r = new FileReader();
r.onload = () => cb(r.result, file);
r.readAsDataURL(file);
}Пример использования:
readFilePreview(input.files[0], (dataUrl, file) => {
console.log(file.type, file.size);
previewImg.src = dataUrl;
});Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22❤10👍9👎1
Тег
<i> используется для изменения голоса или настроения части текста, чтобы передать его другое качество: официальное название, идиома из другого языка, транслитерация или ремарки.Применяется только в том случае, если не существует более подходящего семантического элемента.
Например:
• <em> — смысловое ударение в предложении;
• <strong> — повышенная важность;
• <mark> — выделение «маркером»;
• <dfn> — термин или расшифровка сокращения.
По умолчанию браузеры применяют к
<i> курсивное начертание с помощью font-style: italic.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤10👍10
Чтобы изменить стиль родителя, когда вложенный элемент находится в активном состоянии делают:
parent.classList.toggle('open', child.checked)Но CSS может делать это сам:
.card:has(.toggle:checked) .content {
max-height: 400px;
}Если внутри
.card есть элемент.toggle, который checked, то .content автоматически раскрывается.Изменение внешнего вида родителя в зависимости от действий пользователя:
.input:has(input:focus) {
border-color: #4da3ff;
}Подсветка активного пункта меню:
nav:has(a.active) {
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥13👍7🤝2😁1
В этой фишке карточки реагируют на наведение, расходясь веером и чуть приподнимаясь в 3D. Получается выразительный эффект без JS.
Как работает:
• transform на :hover наклоняет активную карточку и поднимает её над слоем;
• Соседние элементы смещаются через селектор .card:hover ~ .card, создавая веерный эффект;
• z-index позволяет hovered-элементу визуально выходить вперёд.
Такой подход легко масштабируется: можно менять угол поворота, интенсивность смещения и количество карточек.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥15❤9
Шпаргалка по DOM-событиям, связанным с взаимодействием пользователя с формами и полями ввода: изменение текста, подтверждение выбора, фокусировка, валидация, выделение и отправка данных. Эти события обеспечивают корректную обработку пользовательского ввода и управление состояниями элементов.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥13❤9🤝1
Проверяем, находится ли элемент в фокусе!
Иногда нужно понять, активен ли сейчас
Браузер хранит текущий фокус в
Проверяем, сфокусирован ли конкретный элемент:
Отслеживаем смену фокуса:
Проверяем, что фокус ушёл:
🔥 Такой подход полезен для форм, модалок, горячих клавиш, редакторов и любых интерактивных интерфейсов.
📣 Code Ready | #практика
Иногда нужно понять, активен ли сейчас
input, textarea или любой другой интерактивный элемент. Например, чтобы не открывать подсказки, не ловить горячие клавиши или корректно управлять UI.Браузер хранит текущий фокус в
document.activeElement:console.log(document.activeElement);
Проверяем, сфокусирован ли конкретный элемент:
const input = document.getElementById('username');
if (document.activeElement === input) {
console.log('Поле username сейчас в фокусе!');
}Отслеживаем смену фокуса:
document.addEventListener('focusin', (e) => {
console.log('Фокус перешёл на:', e.target);
});Проверяем, что фокус ушёл:
document.addEventListener('focusout', (e) => {
console.log('Элемент потерял фокус:', e.target);
});Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤11🤝9👍2
Привет! В этом гайде создаём компактный виджет для управления количеством — с кнопками «–» и «+», плавной анимацией и простой логикой работы.
Ключевые моменты:
• HTML: минимальная структура — контейнер, две кнопки и отображение текущего числа.
• CSS: скруглённые кнопки, hover-подсветка и микро-анимация изменения значения.
• JS: увеличение и уменьшение количества, защита от значений ниже единицы.
Такой элемент отлично подходит для корзины, карточек товаров и любых интерфейсов, где нужно управлять числом быстро и интуитивно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍13🔥8🤝4
This media is not supported in your browser
VIEW IN TELEGRAM
Remote Repositories — расширение, которое позволяет работать с репозиторием прямо в VS Code: просматривать файлы, править код, создавать коммиты и пушить изменения, без локального клона. Идеально, когда нужно быстро проверить структуру проекта или что-то поправить.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍11🔥11
Большой округлый слой поднимается снизу и покрывает элемент, создавая плавный анимационный переход. За счёт формы слоя и правильной кривой движение выглядит естественно.
Как работает:
• Псевдо-элемент ::before выступает как анимируемый заливочный слой;
• В обычном состоянии он находится за пределами кнопки;
• При наведении слой смещается вверх и перекрывает элемент, а текст своевременно меняет цвет.
Простой приём, который добавляет интерфейсу динамику без единой строки JavaScript.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤9🔥9👎1🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Regex Snippets — расширение, которое добавляет набор готовых шаблонов регулярных выражений: проверка email, поиск чисел, валидация пароля, извлечение групп, работа с пробелами, датами, URL и др. Пишешь короткий префикс и получаешь готовый рабочий паттерн.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤13👍11😁1