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

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

Статистика

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

Последний пост
11:51
Последнее чтение
09:23
Постов за неделю
6
Всего постов
74
Тип
открытый
Язык
русский
Категория
Технологии (по похожим)
В каталоге с
12 авг.
Подписчики
7 756
+1 за 3 дн.
Сутки
−1
−0,01%
Неделя
 
Месяц
 
Просмотров на пост
568
40 постов
Вовлечённость
7,3%
к подписчикам
Постов в день
0,9
всего 74
Упоминаний
0
каналов
Охват размещения
оценка
1/24сутки в ленте
566
1/48двое суток
648
1/72трое суток
699

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 11:5151376

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

  • Как сделать адаптивный размер текста без media queries Для разных экранов часто задают размер текста вручную: @media (max-width: 1200px) { .title { font-size: 48px; } } @media (max-width: 768px) { .title { font-size: 36px; } } @media (max-width: 480px) { .title { font-size: 28px; } } Работает, но для обычной адаптивной типографики можно обойтись вообще без @media. Используйте clamp(): .title { font-size: clamp(28px, 5vw, 64px); } У clamp() три значения: clamp(минимум, желаемое значение, максимум) В нашем примере: clamp(28px, 5vw, 64px) означает: меньше 28px текст не станет; между этими значениями размер плавно зависит от ширины экрана; больше 64px текст не вырастет. Например: <h1 class="title"> Большой адаптивный заголовок </h1> На телефоне браузер оставит текст примерно возле минимального размера. На среднем экране заголовок начнёт плавно увеличиваться. А на широком мониторе остановится на заданном максимуме. Тот же приём работает не только с текстом.

  • Как сделать адаптивную сетку без media queries Обычно для адаптивных карточек начинают писать несколько @media: @media (max-width: 1200px) { ... } @media (max-width: 768px) { ... } @media (max-width: 480px) { ... } Но во многих случаях они вообще не нужны. CSS Grid умеет самостоятельно определять, сколько карточек помещается в строку. Достаточно: .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; } Ключевая часть здесь: repeat(auto-fit, minmax(250px, 1fr)) minmax(250px, 1fr) говорит браузеру: карточка не должна становиться уже 250px, но может растягиваться на свободное место. А auto-fit автоматически определяет количество колонок. Например, на широком экране получится: [ Карточка ] [ Карточка ] [ Карточка ] [ Карточка ] На экране поменьше: [ Карточка ] [ Карточка ] [ Карточка ] [ Карточка ] А на телефоне: [ Карточка ] [ Карточка ] [ Карточка ] При этом никаких breakpoint'ов задавать не нужно. HTML остаётся максимальн

  • Как обрезать длинный текст до нескольких строк без JS Если в карточках, списках или превью текст бывает разной длины, блоки быстро начинают выглядеть неровно. Один заголовок занимает одну строку, другой — четыре, и вся сетка «прыгает». Исправить это можно средствами CSS — без JavaScript и ручного обрезания текста. .title { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } Теперь текст будет отображаться максимум в две строки, а всё лишнее автоматически скроется. Например: <h3 class="title"> Очень длинный заголовок карточки, который обычно занимает несколько строк </h3> Если нужно оставить три строки, достаточно изменить значение: .title { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } А если высота блока должна всегда оставаться одинаковой, можно дополнительно задать line-height и min-height: .title { line-height: 24px; min-height: 48px; display: -webkit-box; -webki

  • Как сделать отступ при скролле к якорю без JS Если на сайте есть фиксированная шапка, переход по якорной ссылке часто выглядит не очень: нужный заголовок прокручивается к самому верху страницы и оказывается прямо под header. Исправить это можно одной CSS-свойством — без JavaScript и дополнительных вычислений. .section { scroll-margin-top: 80px; } Теперь при переходе к элементу: <a href="#contacts">Контакты</a> <section id="contacts" class="section"> ... </section> браузер оставит сверху указанный отступ и заголовок не спрячется за фиксированной шапкой. Если хочется ещё и плавную прокрутку, добавьте: html { scroll-behavior: smooth; } Такой подход особенно удобен для лендингов, документации, FAQ и страниц с навигацией по разделам. Никаких обработчиков click, вычисления координат через getBoundingClientRect() и ручного window.scrollTo()

  • Как ограничить текст несколькими строками без JS Длинные описания в карточках часто ломают сетку: одна карточка получается заметно выше остальных. Обрезать такой текст можно средствами CSS — без JavaScript и ручного сокращения текста. .card-text { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } В этом примере браузер покажет максимум 3 строки, а всё остальное содержимое будет скрыто. Если нужна всего одна строка, можно использовать более простой вариант: .card-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } В результате слишком длинный заголовок аккуратно обрежется и получит многоточие. Удобно для карточек товаров, списков, превью статей и любых интерфейсов, где важно сохранить одинаковую высоту элементов.

  • Как сделать перенос заголовков аккуратнее без <br> Длинные заголовки часто переносятся неудачно: первая строка получается слишком длинной, а во второй остаётся одно-два слова. Вместо ручной расстановки <br> можно использовать CSS-свойство text-wrap: balance .hero-title { max-width: 18ch; text-wrap: balance; } Браузер перераспределит слова между строками так, чтобы их длина выглядела более сбалансированной. Для обычного текста можно использовать другое значение: .article-text { text-wrap: pretty; } pretty старается улучшить переносы в абзаце и уменьшить вероятность появления короткого одинокого слова в последней строке. Пример: .card-title { font-size: 32px; line-height: 1.15; text-wrap: balance; } text-wrap: balance особенно полезен для крупных заголовков, карточек, баннеров, модальных окон и блоков с ограниченной шириной. Так текст выглядит аккуратнее на разных экранах, а добавлять ручные переносы и отдельные версии заголовка больше не нужно.

  • Как менять родительский элемент с помощью 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() для форм, карточек, меню, фильтров и компонентов, состояние которых зависит от вложенного содержимого.

  • 5 авг.688108

    Как адаптировать компонент по ширине контейнера, а не экрана Обычные 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; } } Теперь карточка сама переключит компоновку, когда для неё появится достаточно места — независимо от ширины всего экрана. Контейнерные запросы особенно удобны для карточек, виджетов, сайдбаров и переиспользуемых компонентов в больших интерфейсах.

  • 4 авг.718118

    Как сделать адаптивный размер текста без десятков media-запросов В CSS есть функция clamp(), которая позволяет задать минимальный, адаптивный и максимальный размер элемента. Например: .title { font-size: clamp(24px, 4vw, 64px); } Первое значение — минимальный размер текста, второе меняется вместе с шириной экрана, а третье ограничивает максимальный размер. Таким способом можно адаптировать не только шрифты, но и отступы, ширину блоков, расстояние между элементами и размеры кнопок. .section { padding: clamp(20px, 5vw, 80px); } В результате интерфейс плавно подстраивается под экран, а количество отдельных media-запросов заметно уменьшается.

  • Простой способ найти первых клиентов для проекта с помощью Codex Появился полезный скил для Codex, который помогает найти первых клиентов для вашего проекта. Достаточно дать ссылку на продукт или просто описать идею. Агент сам определит целевую аудиторию, найдет людей и компании с похожими проблемами, оценит, насколько им подойдет ваш продукт, и подготовит готовый список со ссылками на источники. В конце вы получите HTML-отчет с потенциальными клиентами и черновиками первых сообщений. dailyprompts.ru

  • 12-летняя девочка запустила ИИ-стартап: она разработала бота-ассистента, который помогает малому бизнесу удерживать клиентов. Мана Джампала написала сервис через Claude. Бот успешно прошел первые тесты. Через два года она планирует выйти на акселераторы Y Combinator или a16z, а следом — на венчурные фонды. Одна проблема — возраст. Сервис Маны нравится онлайн-бизнесу, но на живых питчах ее не воспринимают всерьез.

  • Grok 4.5 вышел в открытый доступ и обошел Claude Opus 4.8 xAI выпустила самую сильную свою модель и впервые заточила её не только под код, но и под длинные задачи с инструментами в дата-сайенс, финансах и юридической работе. Внутри mixture-of-experts на новом фундаменте V9 с 1.5 триллиона параметров. Обучали совместно с командой Cursor на триллионах токенов реальных сессий разработчиков. Маск называет её моделью класса Opus, только быстрее и дешевле. На графике при анонсе Grok 4.5 обходит Claude Opus 4.8 на нескольких ключевых бенчмарках. Базовая версия стоит 2 доллара за миллион входных токенов и 6 за миллион выходных, у Opus 4.8 те же цифры 5 и 25. Модель уже работает в Cursor на всех тарифах, в Grok Build и через консоль SpaceXAI. dailyprompts.ru

  • Как оплачивать ChatGPT, Midjourney и Claude без посредников Еще недавно зарубежные подписки были настоящей проблемой. Нужно было искать посредников, просить кого-то оплатить сервис или использовать сложные схемы. Сейчас всё проще. С помощью @ можно выпустить виртуальную карту и оплачивать популярные сервисы напрямую. Через ZARUB можно оплачивать ChatGPT, Claude, Perplexity, Midjourney, Suno, Wavespeed и множество других нейросетей и сервисов. Почему пользователи выбирают ZARUB? — Карта выпускается за несколько секунд прямо в боте. Не нужно заполнять анкеты и ждать подтверждений. — Нет скрытых комиссий и непонятных переплат. Оплата проходит по официальному курсу. — Поддерживается 3D-Secure. Это позволяет оплачивать сервисы, где требуется дополнительное подтверждение платежа. —Можно создавать несколько карт под разные задачи. Например, одну для рекламы, другую для подписок, третью для покупок. — ZARUB поддерживает регулярные платежи. Подключили подписку один раз и дальше сервис списывает оплату автоматически. — Карты работают с мультивалютными платежами. Оплата в долларах, евро или другой валюте проходит с автоматической конвертацией. Также через ZARUB можно покупать цифровые товары, игровые валюты, подписки и другие онлайн-сервисы. Больше не нужно каждый месяц искать человека, который поможет оплатить подписку. Достаточно открыть @, пополнить баланс через СБП или криптовалюту и выпустить виртуальную карту. Один бот для оплаты всего, что нужно в современном интернете.

  • В Manus появился новый skill для создания игр Manus выкатил скил /game-dev и теперь достаточно описать словами, какую игру вы хотите сделать и Manus самостоятельно создаст рабочую игру, в которую можно играть, а также подготовит ссылку для её публикации и передачи другим пользователям. Например, можно написать: «Создай игру про космический корабль, который уклоняется от препятствий и набирает очки» и Manus превратит эту задумку в готовый игровой проект. dailyprompts.ru

  • Anthropic снова продлили доступ к Claude Fable 5 Теперь модель останется доступной для пользователей до 19 июля. Лимиты не изменились: пользователям по-прежнему доступно 50% от недельного лимита сессий. После этой даты Fable 5 переведут на оплату через API по количеству использованных токенов. Вот что конкуренция делает, пользователям только плюс. dailyprompts.ru

  • OpenAI выложила гайд по GPT-5.5 Основной упор сделан на сложные продакшн-сценарии, где раньше приходилось много ковыряться в промптах. Кодинг, агенты с кучей инструментов, длинный контекст и многошаговые задачи. Главное изменение в рассуждениях. Модель приходит к результату за меньшее число токенов, чем предыдущие версии, даже при одинаковых настройках. На длинных агентных задачах экономия накапливается. Уровень рассуждения по умолчанию теперь medium и OpenAI прямо пишет, что выкручивать на high стоит только если тесты показывают реальный прирост качества. По инструментам модель точнее выбирает нужный тул и аккуратнее заполняет аргументы, что важно для больших каталогов функций. Инструкции теперь читаются более буквально, поэтому стоит явно прописывать критерии успеха и условия остановки. Тон стал более прямым и деловым, а ответы короче. Для клиентских сценариев OpenAI советует явно задавать теплоту и стиль. https://developers.openai.com/api/docs/guides/latest-model dailyprompts.ru

  • Anthropic добавила в настройки Claude раздел Reflect Reflect показывает как вы работаете с моделью за последний месяц, три месяца, полгода или год. Отчет собирает основные темы разговоров, режим активности и типы задач. Дальше раскладывает поведение по четырем измерениям фреймворка AI Fluency, Делегирование (когда стоит подключать ИИ), Описание (насколько чисто формулируете запрос), Оценка (умеете ли отличать хороший ответ от плохого) и Ответственность (что делаете с результатом). По каждому пункту Reflect приводит примеры из ваших чатов. Например замечает, что вы обычно переписываете email-драфты своим голосом, а сложные задачи делегируете только после того, как сами определились со стратегией. Также подсказывает улучшения. Скажем, перенести повторяющуюся работу в Проект вместо повторного объяснения контекста в каждом новом чате. Периодически всплывают вопросы для размышления вроде "Что вы хотите продолжать делать сами, даже если Claude справится быстрее". Ответ можно обсудить прямо с моделью. Инкогнито-чаты и файлы из подключенных сервисов в отчет не попадают. Для работы функции нужна включенная память Claude. dailyprompts.ru

  • Google AI Studio добавил поддержку кастомных URL для созданных приложений Теперь при публикации приложения, созданного в AI Studio, можно выбрать удобный и запоминающийся URL вместо сложной стандартной ссылки. Например, вместо случайного адреса можно использовать что-то вроде atelier.ai.studio, где название сервиса отражает сам проект. Google отмечает, что благодаря этой функции приложения, созданные в AI Studio, теперь могут получать уникальные адреса, как полноценные веб-сервисы. dailyprompts.ru

  • 1X ******показала**** новые руки для гуманоида NEO, которые по ловкости приближаются к человеческим** В каждой руке 25 подвижных суставов. Моторы спрятаны в предплечье, а движение передаётся через сухожилия, как у человека. Каждый сустав одновременно работает датчиком силы, поэтому робот чувствует, с какой силой давит на предмет. NEO уже умеет собирать LEGO, доставать монеты из кошелька, закручивать лампочки, работать отвёрткой, застёгивать молнию, наливать чай, ловить мягкий мячик, вставлять USB-C и общаться на языке жестов. Кожа на пальцах ловит момент, когда предмет начинает выскальзывать, и рука успевает перехватить его до падения. Точность позиционирования 0.2 миллиметра. Руки водонепроницаемые и сделаны из пищевых материалов, так что NEO моет их прямо под краном. 1X обещает выпустить 10 тысяч таких рук уже в этом году. dailyprompts.ru