fa
Feedback
WebDev+ | Веб-разработка

WebDev+ | Веб-разработка

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

Присоединяйтесь к нашему каналу и погрузитесь в мир веб-разработки Связь: @devmangx

نمایش بیشتر
8 066
مشترکین
-124 ساعت
-247 روز
-11030 روز
آرشیو پست ها
Бывало такое, что sticky header перекрывает заголовки, на которые ведут якорные ссылки? Простое решение: scroll-margin-top Чт
Бывало такое, что sticky header перекрывает заголовки, на которые ведут якорные ссылки? Простое решение: scroll-margin-top Что это делает: Добавляет дополнительный отступ сверху у заголовка. Якорные ссылки продолжают работать, но заголовок оказывается ниже sticky header, так что хедер больше не перекрывает его часть. Как использовать: Если высота вашего хедера 80px, добавьте это к заголовкам:
scroll-margin-top: 80px;
Теперь, когда кто-то кликает по якорной ссылке, браузер прокручивает страницу до заголовка, но оставляет сверху 80px. Заголовок отображается ниже хедера. Дополнительный совет: если высота хедера меняется, например на мобильных устройствах, используйте CSS-переменные:
scroll-margin-top: var(--header-height);
Поддержка браузеров: около 96% Одна строка CSS. И якорные ссылки наконец работают так, как этого ждут пользователи. @WebDev_Plus

Хватит писать reduce() просто ради того, чтобы сгруппировать массив Object.groupBy() уже работает во всех основных браузерах
Хватит писать reduce() просто ради того, чтобы сгруппировать массив Object.groupBy() уже работает во всех основных браузерах и позволяет группировать элементы массива по любому ключу в одну строку. Чисто, читаемо, без зависимостей. Подробнее 👇 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/groupBy @WebDev_Plus

JavaScript использует лексическую область видимости. Но знаешь ли ты, что такое lexical scope? Лексическая область видимости
JavaScript использует лексическую область видимости. Но знаешь ли ты, что такое lexical scope? Лексическая область видимости означает, что область видимости переменной определяется тем, где она написана в коде, а не тем, откуда её вызвали. Пример:
function outer() {
  let x = 10;

  function inner() {
    console.log(x); // может обратиться к x из outer
  }

  inner();
}
outer();
Здесь inner() может получить доступ к x, потому что функция была объявлена внутри outer(). Это и есть lexical scope: функция как бы "помнит" окружение, в котором была создана. Ключевые моменты: * лексическая область видимости статическая, то есть фиксируется в момент определения кода * внутренние функции могут обращаться к переменным из внешних областей видимости * это фундамент, на котором в JavaScript построены closures @WebDev_Plus

Модалки бесят. Хочешь, чтобы они бесили чуть меньше? Используй overscroll-behavior: contain; Что это делает: Ты скроллишь мод
Модалки бесят. Хочешь, чтобы они бесили чуть меньше? Используй overscroll-behavior: contain; Что это делает: Ты скроллишь модалку, доходишь до её конца и продолжаешь крутить дальше. И тут бах, начинает скроллиться страница под ней. Модалка всё ещё открыта, но позиция на странице сзади уже уехала. Это называется scroll chaining. Это свойство как раз это и останавливает. Как это работает: Когда пользователь доходит до конца прокручиваемого элемента, а модалки для этого вообще идеальный кейс, скролл просто останавливается. Он не продолжает передаваться родителю по цепочке. На мобилках заодно не триггерит pull-to-refresh. Где использовать: • модалки и диалоги • сайдбары и навигационные меню • фиксированные контейнеры с overflow: scroll • мобильные карусели Поддержка браузеров: 95% Одна строка CSS. Модалки всё ещё бесят, но уже чуть меньше 😄 @WebDev_Plus

Это самый простой способ переключаться между режимами Dark, Light и System. Просто добавьте элемент с выбранным режимом data-
Это самый простой способ переключаться между режимами Dark, Light и System. Просто добавьте элемент с выбранным режимом data-theme или удалите его из DOM, чтобы переключиться на System mode. Может, это и не идеальный вариант, но это самый быстрый и простой способ! @WebDev_Plus

Angular совет дня: твое приложение ходит в несколько API, но интерсепторы не могут понять, к какому из них относится запрос!?
Angular совет дня: твое приложение ходит в несколько API, но интерсепторы не могут понять, к какому из них относится запрос!? Оберни. Отфильтруй. Готово @WebDev_Plus

autofill у инпутов по умолчанию выглядит стремно: эта заливка фона ломает аккуратные дизайн-системы, особенно в темной теме. Пофиксил чисто CSS-хакам через inset-shadow: autofill:shadow-[inset_0_0_0px_1000px_var(--color-background)] Чтобы принудительно поставить нужный фон и убрать нативный синий. https://micro.bossadizenith.me/writing/taming-chromes-autofill @WebDev_Plus

Если ты веб-разработчик и используешь ИИ, поставь это! Agent Skills от Addy Osmani (Google) для: * Web Performance * best pra
Если ты веб-разработчик и используешь ИИ, поставь это! Agent Skills от Addy Osmani (Google) для: * Web Performance * best practices * доступности (a11y) * технического SEO Под React, Vue, Angular или что угодно.
npx add-skill addyosmani/web-quality-skills
Вот какие skills поставятся: * web-quality-audit - полный аудит в стиле Lighthouse * performance - загрузка и оптимизация * core-web-vitals - LCP, INP, CLS * accessibility - WCAG и навигация с клавиатуры * seo - meta-теги и структура * best-practices - безопасность и стандарты @WebDev_Plus

🔥 @MoshniyWeb Если ты: -хочешь быть в курсе AI-инструментов, которые реально ускоряют работу -ищешь честные обзоры (без рекламы, с реальным опытом) -любишь готовые сниппеты с CodePen, адаптированные под задачи -иногда полезно глянуть, как работают React, Next или просто JS в реальных ситуациях ...залетай 👇 AI-инструменты Показываю, что реально помогает в работе Сниппеты с CodePen Адаптирую код, чтобы ты просто брал и использовал. Честные сравнения Тестирую на личных проектах -рассказываю, что работает, а что пустышка. Короткие заметки React, Next, JS -без растягиваний, просто по делу. 👉 @MoshniyWeb

Laravel Tip Когда нужно обновить запись, но не трогать колонку updated_at, используй updateQuietly(). Без таймстампов. Без со
Laravel Tip Когда нужно обновить запись, но не трогать колонку updated_at, используй updateQuietly(). Без таймстампов. Без событий. Тихое, чистое обновление, когда оно реально нужно. @WebDev_Plus

tabular-nums должно быть дефолтом для любых чисел, которые обновляются (таймеры, счетчики, цены, проценты, счёт, live-данные и т.д.). Включить OpenType-фичу tnum можно через CSS-свойство font-variant-numeric.
.tabular-nums {
  font-variant-numeric: tabular-nums;
}
@WebDev_Plus

CSS-совет: Используй логические свойства вроде margin-inline-start и text-align: start, чтобы верстка автоматически подстраив
CSS-совет: Используй логические свойства вроде margin-inline-start и text-align: start, чтобы верстка автоматически подстраивалась под любое направление письма. @WebDev_Plus

Как нормально организовать папки в коде? Не важно, используешь ты React, Vue, Angular или просто TypeScript 3 самые типичные варианты ↓ @WebDev_Plus

TypeScript сужает тебе выбор на основе того, что ты уже выбрал, и делает это по группам. @WebDev_Plus
TypeScript сужает тебе выбор на основе того, что ты уже выбрал, и делает это по группам. @WebDev_Plus

SSR vs CSR vs SSG Представь собес по вебу. Тебя спрашивают: в чем разница между SSR, CSR и SSG? Это три стратегии рендера UI.
SSR vs CSR vs SSG Представь собес по вебу. Тебя спрашивают: в чем разница между SSR, CSR и SSG? Это три стратегии рендера UI. Если выбрать не ту, можно легко просесть по скорости и SEO. ▪️SSR (Server Side Rendering) Пользователь запрашивает страницу, сервер подтягивает данные, собирает HTML, подключает стили и отдаёт уже готовую разметку в браузер. Потом на клиенте подгружается JS и “оживляет” страницу, это называется hydration. Плюсы: ▪️Хорошее SEO ▪️Контент появляется быстрее Минусы: ▪️Интерактивность не мгновенная, пока hydration не отработает Лучше всего для: ▪️блоги, новости, e-commerce ▪️всё, где важны SEO и свежие данные CSR (Client Side Rendering) Пользователь запрашивает страницу, сервер отдаёт пустой HTML плюс ссылки на JS/CSS. Дальше браузер загружает бандлы, JS строит страницу и накатывает стили. Плюсы: ▪️После загрузки супер-интерактивно Минусы: ▪️Плохое SEO (до выполнения JS страница фактически пустая) ▪️Медленный first paint/первый контент, особенно на слабых устройствах Лучше всего для: ▪️дашборды, SaaS, внутренние панели ▪️всё за логином, где SEO не важно SSG (Static Site Generation) HTML генерируется заранее на этапе сборки/деплоя. Когда пользователь запрашивает страницу, сервер просто отдаёт готовый HTML файл. Никаких вычислений “на лету”. Плюсы: ▪️Самый быстрый рендер ▪️Отличное SEO Минусы: ▪️Плохо подходит для динамического контента или часто меняющихся данных Лучше всего для: ▪️портфолио, документация, лендинги ▪️контент, который редко обновляется В одну строку ▪️SSR: собирается на сервере на каждый запрос ▪️CSR: собирается в браузере после загрузки JS ▪️SSG: собирается при билде и отдается мгновенно @WebDev_Plus

Laravel Tip Найди запросы, которые выполняются слишком долго. Это легко логировать с помощью: @WebDev_Plus
Laravel Tip Найди запросы, которые выполняются слишком долго. Это легко логировать с помощью: @WebDev_Plus

HTML-совет Тег используют, чтобы пометить аббревиатуру или акроним (сокращение) от фразы или длинного слова. Он улучшает дост
HTML-совет Тег <abbr> используют, чтобы пометить аббревиатуру или акроним (сокращение) от фразы или длинного слова. Он улучшает доступность и понимание: можно дать расшифровку, которая появится при наведении. Обычно <abbr> используют вместе с атрибутом title. Значение title показывается как подсказка, когда пользователь наводит курсор на содержимое <abbr>. В этом примере: WWW это сокращение от World Wide Web. Когда пользователь наведёт на WWW, появится тултип с полной расшифровкой World Wide Web. Зачем использовать <abbr>? Доступность: скринридеры могут озвучивать полную форму, когда пользователь фокусируется на сокращении. Это помогает людям с нарушениями зрения. Удобство: пользователь быстро видит смысл термина, не уходя со страницы и не ломая поток чтения. @WebDev_Plus

Знакомьтесь: abs() в CSS Функция abs() возвращает абсолютное значение вычисления, то есть делает число, длину или процент все
Знакомьтесь: abs() в CSS Функция abs() возвращает абсолютное значение вычисления, то есть делает число, длину или процент всегда положительными. Полезно для более безопасной вёрстки и предсказуемого визуала. Подробнее здесь ↓ https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/abs @WebDev_Plus

Этот пост выкуплен под рекламную интеграцию. Но здесь будут скрины от участников frontend-менторства Тихона Галактионова и по
+4
Этот пост выкуплен под рекламную интеграцию.
Но здесь будут скрины от участников frontend-менторства Тихона Галактионова и подборка полезных материалов:
👉100 вопросов, которые точно помогут тебе на собеседовании: ссылка 👉Подборка из 100+ каналов с вакансиями для разработчиков: ссылка 👉10 задротских вопросов про JavaScript, после которых ты усомнишься, что вообще знаешь JS: ссылка 👉Чек лист проверки своего резюме: ссылка 👉Разбор самых популярных и каверзных вопросов на собесах: ссылка 👉Лайфхак как аккуратно “пинговать” рекрутеров: ссылка Ссылка на канал Тихона, там же можно найти больше материалов для подготовки к собеседованиям в Big Tech: ссылка Реклама, erid: 2W5zFHW9utM ИП Галактионов Тихон Витальевич, ИНН 771618975809