Привет! В этом гайде создаём компактный поиск по тексту с подсветкой совпадений и счётчиком вхождений.
Ключевые моменты:
• HTML: структура — textarea, поле ввода запроса и область вывода результата.
• CSS: контейнер, скругления, тень и прокрутка в блоке результата.
• JS: поиск регулярным выражением, подсветка и подсчёт совпадений.
Такой мини-поиск отлично подойдёт для UI-демо, форм, поиска по отзывам или логам, где важно быстро найти фразу, сохранив простой интерфейс.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤10👍8
Map — это удобная структура данных для хранения пар ключ - значение, где ключом может быть что угодно, а порядок элементов сохраняется.
На картинке — часто используемые методы Map: от добавления и получения значений до перебора данных.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤10🤝8
Этот приём создаёт ощущение, что текст в меню не простая статичная надпись, а активная часть интерфейса, где underline становится визуальным индикатором состояния.
Как работает:
• details заменяет необходимость в обработке клика;
• position: relative делает элемент системой координат для underline;
• cubic-bezier управляет «магнитностью» движения;
• glow привязан к underline, а не к элементу целиком, поэтому эффект остаётся аккуратным и предсказуемым.
Так визуальная обратная связь становится структурной, улучшая восприятие интерактивности без лишних зависимостей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍9🤝9👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Это не обучающие статьи, а глубокие разборы архитектуры, устройства языка, качества кода и масштабируемых решений. Здесь много про то, как писать код: принципы, ограничения языка, реальные инженерные компромиссы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍8🤝7
Каждый год пишу итоги, не буду отказываться и сейчас)
2025 выдался не прям продуктивным, но достаточно многое поменялось: контент, аудитория и планы.
На 2026 год главная цель это набрать 50000 подписчиков. Поэтому желаю каждому чтобы новый год был еще лучше!
С наступающим!🎄
2025 выдался не прям продуктивным, но достаточно многое поменялось: контент, аудитория и планы.
На 2026 год главная цель это набрать 50000 подписчиков. Поэтому желаю каждому чтобы новый год был еще лучше!
С наступающим!
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥28❤8👍8
Когда вёрстка “плывёт”, удобно временно включить универсальную подсветку границ, чтобы сразу увидеть проблемные блоки и их вложенность.
Вместо того чтобы вручную писать для каждого элемента
border: 1px solid red, используйте CSS-переменную и outline (он не влияет на layout)::root {
--debug: 1px dashed red;
}Теперь включаем дебаг в одну строку для любого элемента:
* {
outline: var(--debug);
}outline не сдвигает элементы, не ломает размеры и не создаёт переполнений, поэтому дебаг абсолютно точный.Хочешь быстро отключить? Просто меняем переменную:
:root {
--debug: none;
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍15🤝8🔥2
Получаем данные случайного пользователя!
Нам обычно нужен первый пользователь:
Достаём поля через деструктуризацию. Для UI:
Когда нужен набор моков — используем
🔥 При массовой загрузке учитывайте
📣 Code Ready | #практика
RandomUser API удобен для фронтенда: один запрос — и есть JSON с реалистичным профилем. В нормальном ответе приходит объект { results: [...] }, где results — массив профилей. Нам обычно нужен первый пользователь:
async function getRandomUser() {
const res = await fetch("https://randomuser.me/api/");
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { results, error } = await res.json();
if (error) throw new Error(error);
if (!results?.length) throw new Error("No results");
return results[0];
}Достаём поля через деструктуризацию. Для UI:
picture.medium — аватар среднего размера, thumbnail — для списков:getRandomUser().then(({ name, email, location, picture }) => {
const fullName = `${name.first} ${name.last}`;
console.log(`Имя: ${fullName} | Страна: ${location.country}`);
console.log(`Аватар (medium): ${picture.medium} | Email: ${email}`);
}).catch(console.error);Когда нужен набор моков — используем
?results=N. API поддерживает крупные батч-запросы (до 5000 пользователей за один вызов), что эффективнее, чем множество одиночных запросов:async function getRandomUsers(count = 5) {
const res = await fetch(`https://randomuser.me/api/?results=${count}`);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const { results, error } = await res.json();
if (error) throw new Error(error);
if (!results?.length) throw new Error("No results");
return results;
}
getRandomUsers(3).then(list => console.log(list));rate-limit и размер ответа. Кэшируйте профили, если они нужны повторно в рамках сессии.Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7🔥6🤝1
В этой статье вы:
• Узнаете, как заменить привычные JavaScript-фичи html/css;
• Реализуете интерактивные элементы (аккордеоны, раскрывающиеся блоки);
• Научитесь строить UI-компоненты вроде автодополнения, модальных окон и popover-меню через современные html-атрибуты;
• Получите примеры, которые позволяют снижать зависимость от JavaScript там, где возможно. 🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🤝8🔥7❤1
Интерфейс кажется живым, когда есть визуальная обратная связь. В этом приёме сделаем проходящий световой блик, который появляется при наведении.
Как работает:
• ::before создаёт отдельный слой блика, который движется по координате;
• linear-gradient формирует мягкий центр света и прозрачные края;
• keyframes sh управляет непрерывным движением без рестарта;
• :hover меняет длительность анимации, но не запускает её заново, поэтому эффект ощущается отзывчивым и плавным;
Это отличный пример того, как можно управлять визуальным откликом интерфейса, делая его выразительным и предсказуемым.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🤝8❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Хочешь быстро понять базу по HTML, CSS, JavaScript, и др. Этот сайт отлично подойдёт как справочник и тренажёр. Материалы разбиты по небольшим блокам с примерами кода, которые можно сразу запустить в браузере, это помогает не просто читать, а реально видеть, как работает код. Идеально, когда нужно понять новую тему или быстро найти ответ на конкретный вопрос.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8❤7🤝1
Отключаем тап-хайлайт (системный flash-эффект) для кнопок и ссылок!
На мобильных устройствах при тапе часто появляется серая/синяя подсветка, в кастомных UI это может выглядит как визуальный баг:
Чтобы интерактивность не пропала, добавьте свой предсказуемый
Нюансы:
🔥 В итоге убираем системный flash и даём контролируемый
📣 Code Ready | #совет
На мобильных устройствах при тапе часто появляется серая/синяя подсветка, в кастомных UI это может выглядит как визуальный баг:
a, button {
-webkit-tap-highlight-color: transparent;
}Чтобы интерактивность не пропала, добавьте свой предсказуемый
feedback:a:active, button:active {
opacity: .7; /* базовый tap-feedback, работает в продакшене для кликабельных элементов */
}Нюансы:
:active на iOS иногда капризен на нестандартных элементах, но для a и button, надёжный и простой вариант.feedback.Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥10❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Next JS/TS Snippets — расширение, которое даёт готовые сниппеты для самых распространённых конструкций: маршруты, API-роуты, компонентные страницы, layout, middleware и многое другое, причем сразу с TypeScript-поддержкой. Экономит время, уменьшает количество опечаток и делает разработку проекта куда быстрее и приятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥7🤝6❤3
⚡️Hype Tech анонимно публикует промпты для ИИ!
Генерируй изображения, создавай тренды и упрости ЛЮБУЮ рутину — всё это бесплатно и в открытом доступе.
Топ-промты от Hype Tech:
• Эксперименты с генерацией изображений и текста;
• Необычные промпты для ChatGPT и не только;
• Идеи для упрощения рутинных задач.
Подпишись и забери самые мощные ИИ для твоего арсенала: https://news.1rj.ru/str/+xjSLfhZQOwMGQy
Генерируй изображения, создавай тренды и упрости ЛЮБУЮ рутину — всё это бесплатно и в открытом доступе.
Топ-промты от Hype Tech:
• Эксперименты с генерацией изображений и текста;
• Необычные промпты для ChatGPT и не только;
• Идеи для упрощения рутинных задач.
Подпишись и забери самые мощные ИИ для твоего арсенала: https://news.1rj.ru/str/+xjSLfhZQOwMGQy
👎6😁2
Многие до сих пор центрируют так:
.box {
display: grid;
justify-content: center;
align-content: center;
}Работает, но можно короче:
.box {
display: grid;
place-content: center;
}place-content: center центрирует весь контент сетки как блок по обеим осям.Если хотите центрировать элемент внутри сетки (типичный случай для модалок и баннеров):
.box {
display: grid;
place-items: center;
}А если центрируете конкретный
grid-item:.child {
place-self: center;
}Работает только если
.child прямой наследник grid-контейнера (то есть grid-item).Grid — для 2D-выравнивания, flex — для линейных потоков. Используй по задаче layout будет чище и предсказуемее.Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥14❤8🤝1