fa
Feedback
Фронтенд Гайд

Фронтенд Гайд

رفتن به کانال در Telegram

Канал для фронтендеров, много полезных лайфхаков, фичей, макетов, тестов! Все представлено в виде готового кода, бери и юзай в своем проекте. 6ad1a2aabe82d4fbb0d6

نمایش بیشتر
7 687
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-87 روز
-4730 روز
جذب مشترکین
اکتبر '26
اکتبر '26
+9
در 0 کانال‌ها
سپتامبر '26
+46
در 0 کانال‌ها
Get PRO
اوت '26
+88
در 0 کانال‌ها
Get PRO
ژوئیه '26
+51
در 1 کانال‌ها
Get PRO
ژوئن '26
+1 646
در 4 کانال‌ها
Get PRO
مه '260
در 0 کانال‌ها
Get PRO
آوریل '26
+4
در 0 کانال‌ها
Get PRO
مارس '26
+6
در 1 کانال‌ها
Get PRO
فوریه '26
+6
در 3 کانال‌ها
Get PRO
ژانویه '26
+10
در 1 کانال‌ها
Get PRO
دسامبر '25
+72
در 9 کانال‌ها
Get PRO
نوامبر '25
+55
در 0 کانال‌ها
Get PRO
اکتبر '25
+56
در 0 کانال‌ها
Get PRO
سپتامبر '25
+51
در 0 کانال‌ها
Get PRO
اوت '25
+65
در 0 کانال‌ها
Get PRO
ژوئیه '25
+44
در 0 کانال‌ها
Get PRO
ژوئن '25
+44
در 0 کانال‌ها
Get PRO
مه '25
+71
در 0 کانال‌ها
Get PRO
آوریل '25
+82
در 0 کانال‌ها
Get PRO
مارس '25
+56
در 0 کانال‌ها
Get PRO
فوریه '25
+114
در 0 کانال‌ها
Get PRO
ژانویه '25
+102
در 0 کانال‌ها
Get PRO
دسامبر '24
+189
در 0 کانال‌ها
Get PRO
نوامبر '24
+166
در 1 کانال‌ها
Get PRO
اکتبر '24
+201
در 0 کانال‌ها
Get PRO
سپتامبر '24
+156
در 0 کانال‌ها
Get PRO
اوت '24
+227
در 0 کانال‌ها
Get PRO
ژوئیه '24
+217
در 0 کانال‌ها
Get PRO
ژوئن '24
+254
در 0 کانال‌ها
Get PRO
مه '24
+301
در 0 کانال‌ها
Get PRO
آوریل '24
+332
در 0 کانال‌ها
Get PRO
مارس '24
+388
در 0 کانال‌ها
Get PRO
فوریه '24
+282
در 0 کانال‌ها
Get PRO
ژانویه '24
+162
در 0 کانال‌ها
Get PRO
دسامبر '23
+263
در 6 کانال‌ها
Get PRO
نوامبر '23
+951
در 31 کانال‌ها
Get PRO
اکتبر '23
+38
در 1 کانال‌ها
Get PRO
سپتامبر '23
+356
در 0 کانال‌ها
Get PRO
اوت '23
+542
در 0 کانال‌ها
Get PRO
ژوئیه '23
+13
در 0 کانال‌ها
Get PRO
ژوئن '23
+15
در 0 کانال‌ها
Get PRO
مه '23
+27
در 0 کانال‌ها
Get PRO
آوریل '23
+81
در 0 کانال‌ها
Get PRO
مارس '23
+309
در 0 کانال‌ها
Get PRO
فوریه '23
+15
در 0 کانال‌ها
Get PRO
ژانویه '23
+33
در 0 کانال‌ها
Get PRO
دسامبر '22
+354
در 0 کانال‌ها
Get PRO
نوامبر '22
+1 251
در 0 کانال‌ها
Get PRO
اکتبر '22
+35
در 0 کانال‌ها
Get PRO
سپتامبر '22
+11
در 0 کانال‌ها
Get PRO
اوت '22
+22
در 0 کانال‌ها
Get PRO
ژوئیه '22
+69
در 0 کانال‌ها
Get PRO
ژوئن '22
+30
در 0 کانال‌ها
Get PRO
مه '22
+75
در 0 کانال‌ها
Get PRO
آوریل '22
+60
در 0 کانال‌ها
Get PRO
مارس '22
+630
در 0 کانال‌ها
Get PRO
فوریه '22
+470
در 0 کانال‌ها
Get PRO
ژانویه '22
+1 403
در 0 کانال‌ها
Get PRO
دسامبر '21
+3 816
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
06 اکتبر+1
05 اکتبر+2
04 اکتبر+2
03 اکتبر+2
02 اکتبر0
01 اکتبر+2
پست‌های کانال
VPN, который можно включить один раз — и больше о нём не думать. Надоело постоянно переключать VPN туда-сюда? Включил ради од
VPN, который можно включить один раз — и больше о нём не думать. Надоело постоянно переключать VPN туда-сюда? Включил ради одного сервиса — перестал нормально работать банк. Выключил — снова не открывается нужный сайт. В Архангел VPN это решили автоматически добавив белые списки! И всё это одновременно. Ничего вручную переключать не нужно. Плюс внутри уже есть: — встроенный AdBlock — меньше рекламы и трекеров — быстрые серверы — подключение за несколько минут — удобное управление прямо из Telegram — оплата картой, СБП, Криптовалютой или Telegram Stars — пробный доступ перед покупкой И главное — без дорогих подписок по 300–500 ₽ в месяц. Тарифы Архангел VPN — от 49 ₽ А по промокоду FORNT5 · скидка 5% То есть полноценный VPN можно получить дешевле чашки кофе, без сложных настроек и скрытых условий. Оплатили → нажали «Подключить» → готово. Попробуйте Архангел VPN и почувствуйте разницу сами. 👉 @arhangel29bot Архангел VPN — включил и забыл!

2
Новую капчу Google уже научились обходить Капчу с проверкой через камеру удалось пройти с помощью обычных фотографий, открыты
Новую капчу Google уже научились обходить Капчу с проверкой через камеру удалось пройти с помощью обычных фотографий, открытых на экране — Вместо выбора картинок теперь нужно показать жест в камеру — Оказалось, что системе достаточно изображения с экрана — живой человек не обязателен — Из-за этого новую защиту удалось обойти гораздо быстрее, чем ожидалось Надёжно, как швейцарские часы
468
3
Совет по CSS: Единица измерения turn Иногда проще задать вращение с помощью единицы turn вместо deg, особенно когда нужно ука
Совет по CSS: Единица измерения turn Иногда проще задать вращение с помощью единицы turn вместо deg, особенно когда нужно указать значение больше 360 градусов (1 turn = 360 deg)
632
4
😍 QuickRef — компактная шпаргалка по JavaScript! Это удобный справочник, где собраны ключевые конструкции, методы и синтакси
😍 QuickRef — компактная шпаргалка по JavaScript! Это удобный справочник, где собраны ключевые конструкции, методы и синтаксис JS на одной странице. Здесь есть всё необходимое: переменные, функции, операторы, строки, массивы и базовые примеры кода для быстрого ориентирования. Формат максимально сжатый и практичный. 📌 Оставляю ссылочку: quickref.me
720
5
Sakana AI выпустила Fugu, модель, которая внутри сама собирает команду из других ИИ под вашу задачу Снаружи это один API, как
Sakana AI выпустила Fugu, модель, которая внутри сама собирает команду из других ИИ под вашу задачу Снаружи это один API, как у любого чат-бота. Внутри Fugu сама решает, справится в одиночку или позвать сильных специалистов из своего пула, распределяет задачи, проверяет ответы и собирает итог. Версий две. Обычная Fugu для повседневной работы и Fugu Ultra для сложных многошаговых задач. Обе подключаются через один OpenAI совместимый API. По бенчмаркам Fugu Ultra идет вровень с Anthropic Fable 5 и Mythos Preview на инженерных, научных и рассуждающих тестах. На практических задачах обходит Gemini 3.1 Pro, Opus 4.8 и GPT 5.5. На код ревью Fugu Ultra находит десятки проблем там, где другие модели видят три или четыре. Хорошо держит роль агента в долгих сессиях, не сбивается со своей задачи. По одному короткому заданию способна провести полный аудит безопасности с отчетом и не выйти за рамки. Главная фишка не только в качестве. Fugu не зависит от одного поставщика.
698
6
Опыт в своей области важнее умения программировать Anthropic опубликовала исследование по 400 тысячам сессий Claude Code от 2
Опыт в своей области важнее умения программировать Anthropic опубликовала исследование по 400 тысячам сессий Claude Code от 235 тысяч пользователей. Главный вывод. В типичной сессии человек принимает 70% решений о том, что делать, а Claude принимает 80% решений о том, как это делать. Человек ставит задачу, ИИ её реализует. Эксперты в своей области получают от инструмента значительно больше. У новичка каждый промпт запускает примерно 5 действий Claude и 600 слов вывода. У эксперта те же метрики равны 12 действиям и 3200 словам. Разница в 5 раз, при этом речь не про знание кода, а про понимание своей предметной области. По успешности сессий картина схожая. Новички добиваются подтверждённого результата в 15% случаев, пользователи среднего уровня и выше в 28-33%. Но самый большой скачок происходит при переходе от новичка к среднему уровню, а не от среднего к эксперту.
729
7
Anthropic выложили бесплатную библиотеку промптов для Claude В Prompt Library собраны готовые промпты для Claude Code с объяс
Anthropic выложили бесплатную библиотеку промптов для Claude В Prompt Library собраны готовые промпты для Claude Code с объяснениями, почему они работают и как адаптировать их под свои задачи. — Поиск уязвимостей и анализ безопасности — Отладка кода и исправление ошибок — Автоматизация задач и рабочих процессов — Для каждого промпта есть рекомендации по использованию Бесплатно 🚀 Забираем тут.
716
8
Summer AI Conf | ИИ конференция про работу с визуальным контентом 9 июля Phygital+ проводит бесплатную онлайн конференцию про
Summer AI Conf | ИИ конференция про работу с визуальным контентом 9 июля Phygital+ проводит бесплатную онлайн конференцию про реальные кейсы внедрения нейросетей в дизайн, маркетинг и бизнес-процессы. Как перестать зависеть от фотостоков и уложить производство контента в 1 день вместо недели? Ключевые спикеры и темы: X5 Tech, Чижик — ИИ-видео для SMM и мерча. DEPOT — ИИ в спецпроектах и HR-брендинге. KANZLER — кампании без съемок под каждую гипотезу. Альфа банк — живой кейс команды про внедрении ИИ инструментов. ИВИ — ускорение продакшна для стриминга.
720
9
Как сделать блок на всю высоту экрана без проблем с 100vh Для полноэкранных секций часто пишут: .hero { min-height: 100vh; }
Как сделать блок на всю высоту экрана без проблем с 100vh Для полноэкранных секций часто пишут: .hero { min-height: 100vh; } На компьютере всё выглядит нормально. Но на мобильных браузерах 100vh может вести себя неожиданно из-за адресной строки и нижней панели браузера. В результате блок иногда оказывается выше видимой области, а часть контента уезжает вниз. Для современных браузеров лучше использовать dvh: .hero { min-height: 100dvh; } dvh означает dynamic viewport height. То есть браузер пересчитывает высоту блока вместе с изменением реально доступной области экрана. Например: <section class="hero"> <h1>Главный экран</h1> <p>Контент всегда помещается в видимую область.</p> </section> .hero { min-height: 100dvh; display: grid; place-items: center; } Теперь при появлении или скрытии панелей мобильного браузера высота секции будет корректироваться автоматически. Есть ещё два похожих значения: 100svh 100lvh 100dvh svh — минимальная высота viewport, когда панели браузера занимают бол
671
10
12-летняя девочка запустила ИИ-стартап: она разработала бота-ассистента, который помогает малому бизнесу удерживать клиентов.
12-летняя девочка запустила ИИ-стартап: она разработала бота-ассистента, который помогает малому бизнесу удерживать клиентов. Мана Джампала написала сервис через Claude. Бот успешно прошел первые тесты. Через два года она планирует выйти на акселераторы Y Combinator или a16z, а следом — на венчурные фонды. Одна проблема — возраст. Сервис Маны нравится онлайн-бизнесу, но на живых питчах ее не воспринимают всерьез.
748
11
Как менять родительский элемент с помощью CSS :has() Раньше CSS не позволял выбрать родительский элемент в зависимости от тог
Как менять родительский элемент с помощью CSS :has() Раньше CSS не позволял выбрать родительский элемент в зависимости от того, что находится внутри него. Для этого приходилось добавлять JavaScript или отдельные классы. Теперь можно использовать псевдокласс :has(). Например, подсветим поле формы, если внутри него есть элемент с ошибкой: .form-field:has(.error) { border-color: #ff4d67; background: #fff3f5; } Или изменим карточку, если внутри находится выбранный чекбокс: .card:has(input:checked) { border-color: #3185ff; transform: translateY(-2px); } Также :has() удобно использовать для проверки соседних элементов: .item:has(+ .item.active) { opacity: 0.6; } Главное преимущество — можно строить интерактивные состояния интерфейса без лишних классов и небольших JavaScript-обработчиков. Используйте :has() для форм, карточек, меню, фильтров и компонентов, состояние которых зависит от вложенного содержимого.
751
12
Xiaomi MiMo-V2.6 Pro: новая открытая модель для генерации 3D и сложных ИИ-агентов. Компания Xiaomi представила новое поколени
Xiaomi MiMo-V2.6 Pro: новая открытая модель для генерации 3D и сложных ИИ-агентов. Компания Xiaomi представила новое поколение своих мультимодальных разработок — серию MiMo-V2.6. В линейку вошли две открытые модели: флагманская MiMo-V2.6 Pro и облегченная версия Flash. Этот релиз стал значимым событием для индустрии, так как старшая модель продемонстрировала рекордные показатели производительности, опередив конкурентов в сегменте Open Source и вплотную приблизившись к закрытым проприетарным решениям в специфических тестах на агентность.
777
13
Как адаптировать компонент по ширине контейнера, а не экрана Обычные media-запросы ориентируются на ширину окна браузера. Но
Как адаптировать компонент по ширине контейнера, а не экрана Обычные media-запросы ориентируются на ширину окна браузера. Но один и тот же компонент может находиться в широкой секции, узком сайдбаре или сетке карточек. Для таких случаев в CSS есть контейнерные запросы. Сначала нужно объявить родительский элемент контейнером: .card-wrapper { container-type: inline-size; } После этого стили компонента можно менять в зависимости от ширины именно этого контейнера: .card { display: grid; grid-template-columns: 1fr; } @container (min-width: 560px) { .card { grid-template-columns: 160px 1fr; } } Теперь карточка сама переключит компоновку, когда для неё появится достаточно места — независимо от ширины всего экрана. Контейнерные запросы особенно удобны для карточек, виджетов, сайдбаров и переиспользуемых компонентов в больших интерфейсах.
830
14
⏳ Как дождаться завершения всех промисов Promise.all() прерывает ожидание, если хотя бы одна операция завершается ошибкой. Ко
⏳ Как дождаться завершения всех промисов Promise.all() прерывает ожидание, если хотя бы одна операция завершается ошибкой. Когда нужны результаты всех задач, используйте Promise.allSettled(). Создаём массив промисов: const tasks = [ loadUser(), loadPosts(), loadStats() ]; Дожидаемся завершения каждой операции: const results = await Promise.allSettled(tasks); Каждый результат содержит статус: results.forEach(result => { if (result.status === 'fulfilled') { console.log(result.value); } else { console.error(result.reason); } }); Одна ошибка не остановит остальные задачи — вы получите информацию обо всех успешных и неуспешных операциях. #javascript #frontend #программирование
751
15
🖼 Ленивая загрузка изображений без JavaScript Если на странице много изображений, необязательно загружать их все сразу. Доба
🖼 Ленивая загрузка изображений без JavaScript Если на странице много изображений, необязательно загружать их все сразу. Добавьте атрибут loading="lazy": <img src="photo.webp" loading="lazy" alt="Описание" > Браузер отложит загрузку изображения, пока пользователь не приблизится к нему при прокрутке. Обязательно указывайте размеры: <img src="photo.webp" width="800" height="450" loading="lazy" alt="Описание" > Это заранее резервирует место и предотвращает скачки контента во время загрузки. Не используйте loading="lazy" для главного изображения в первом экране — оно должно загружаться сразу. Подходит для каталогов, галерей, статей и длинных страниц. #html #frontend #оптимизация
725
16
↔️ Адаптивные отступы для любого языка Вместо физических направлений left, right, top и bottom в CSS можно использовать логич
↔️ Адаптивные отступы для любого языка Вместо физических направлений left, right, top и bottom в CSS можно использовать логические свойства. Горизонтальные отступы: .card { margin-inline: auto; padding-inline: 24px; } Вертикальные отступы: .card { margin-block: 32px; padding-block: 16px; } Также доступны отдельные стороны: .card { margin-inline-start: 20px; padding-block-end: 24px; } Главное преимущество — браузер учитывает направление текста. В интерфейсе LTR начало строки находится слева, а в RTL — справа. Поэтому макет автоматически адаптируется под нужный язык. #css #frontend #локализация
780
17
📑 Глубокая копия объекта в JavaScript Оператор расширения создаёт только поверхностную копию объекта: const copy = { ...orig
📑 Глубокая копия объекта в JavaScript Оператор расширения создаёт только поверхностную копию объекта: const copy = { ...original }; Вложенные объекты при этом продолжают ссылаться на одни и те же данные. Для создания независимой глубокой копии используйте structuredClone(): const copy = structuredClone(original); Теперь вложенные свойства копии можно изменять отдельно: copy.user.name = 'Анна'; console.log(original.user.name); Значение внутри original останется прежним. structuredClone() поддерживает объекты, массивы, Map, Set, даты и циклические ссылки. При этом функции и DOM-элементы таким способом скопировать нельзя. #javascript #frontend #разработка
776
18
📐 Как сохранить пропорции блока Чтобы видео, изображение или карточка сохраняли правильную форму при изменении ширины, испол
📐 Как сохранить пропорции блока Чтобы видео, изображение или карточка сохраняли правильную форму при изменении ширины, используйте CSS-свойство aspect-ratio. Например, создадим блок с пропорциями 16:9: .video { width: 100%; aspect-ratio: 16 / 9; } Высоту указывать не нужно — браузер рассчитает её автоматически. Чтобы изображение полностью заполняло блок: .video img { width: 100%; height: 100%; object-fit: cover; } Если ширина контейнера изменится, его высота подстроится с сохранением заданных пропорций. Подходит для видео, изображений, карточек, баннеров и превью. Сохраняйте, чтобы не потерять 📎 #css #frontend #вебразработка
781
19
👁 Как отследить появление элемента на экране IntersectionObserver сообщает, когда элемент входит в область видимости пользов
👁 Как отследить появление элемента на экране IntersectionObserver сообщает, когда элемент входит в область видимости пользователя или покидает её. Создаём наблюдатель: const observer = new IntersectionObserver(([entry]) => { entry.target.classList.toggle( 'visible', entry.isIntersecting ); }); Подключаем нужный элемент: const card = document.querySelector('.card'); observer.observe(card); Теперь можно запускать CSS-анимацию при появлении карточки: .card { opacity: 0; transform: translateY(20px); transition: 0.4s; } .card.visible { opacity: 1; transform: translateY(0); } Метод подходит для анимаций, ленивой загрузки контента и аналитики просмотров. #javascript #frontend #вебразработка
775
20
🎠 Карусель с CSS без JavaScript CSS Scroll Snap позволяет автоматически фиксировать прокрутку на ближайшей карточке. Настраи
🎠 Карусель с CSS без JavaScript CSS Scroll Snap позволяет автоматически фиксировать прокрутку на ближайшей карточке. Настраиваем горизонтальный контейнер: .slider { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; } Затем указываем точку фиксации для каждой карточки: .slide { flex: 0 0 80%; scroll-snap-align: start; } Теперь после прокрутки ближайшая карточка сама выровняется по началу контейнера. Для более плавного поведения можно добавить: .slider { scroll-behavior: smooth; } Подходит для мобильных подборок, галерей, отзывов и карточек товаров. #css #frontend #вебразработка
721