CodeBase | Frontend
2.01K subscribers
487 photos
211 videos
4 files
794 links
Все самое интересное и полезное у нас 😎

Контакт: @Filgood777 (реклама, сотрудничество)
Download Telegram
⚡️ Прощай, FID. Привет, INP: Главная метрика Core Web Vitals

First Input Delay (FID) официально ушел на пенсию в марте 2024 года. На его место пришел INP (Interaction to Next Paint). Если вы всё еще оптимизируете старую метрику, самое время пересмотреть свои подходы.

В чем был обман FID?
FID измерял только задержку (Input Delay) от клика до того момента, как браузер начал выполнять ваш обработчик событий.
Если ваша функция onClick после старта зависала на 2 секунды, перебирая огромный массив, FID всё равно мог быть идеальным (например, 3 мс), хотя пользователь видел намертво зависший интерфейс.

Что измеряет INP?
INP фиксирует всё время до появления визуального отклика на экране:

1. Ожидание освобождения Main Thread (Input delay)
2. Выполнение вашего JS-кода (Processing time)
3. Пересчет стилей, Layout и саму отрисовку (Presentation delay)

Хороший INP - это меньше 200 мс. Причем берется не среднее значение, а один из худших результатов за сессию (98-й перцентиль).

🛠 Как спасать INP (Senior level):

1. Разбивайте Long Tasks (Yield to Main Thread)
Не заставляйте браузер делать всю тяжелую работу за один присест. Дайте ему возможность «вздохнуть» и отрисовать кадр. В современных браузерах для этого внедряется scheduler.yield().


async function handleHeavyClick() {
// 1. Показываем лоадер (синхронно, легко)
showSpinner();

// 2. Отдаем управление браузеру, чтобы он успел отрисовать лоадер!
// Если scheduler.yield недоступен, используем await new Promise(r => setTimeout(r, 0))
if ('scheduler' in window && 'yield' in scheduler) {
await scheduler.yield();
} else {
await new Promise(resolve => setTimeout(resolve, 0));
}

// 3. Теперь делаем тяжелую работу
processHugeData();
}



2. Используйте startTransition в React 18+
Если клик вызывает обновление состояния, которое требует тяжелого рендера (например, фильтрация большого списка), React может заблокировать отрисовку того же чекбокса, на который вы нажали.
Оберните тяжелое обновление стейта в startTransition - React пометит его как низкоприоритетное и не будет блокировать UI.

3. Избегайте Layout Thrashing
Если в обработчике клика вы сначала читаете размеры элемента (el.offsetHeight), а потом меняете классы, вы заставляете браузер синхронно пересчитывать стили (Forced Synchronous Layout). Это убивает фазу Presentation Delay. Сначала читайте, потом пишите!

CodeBase | Frontend | #js
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Conform - это потрясающе

- Валидация клиента + сервера из одной схемы Zod
- Прогрессивное улучшение
- Восхитительно простой API
- Работает с Next.js ( server actions + useFormState)

CodeBase | Frontend | #animate
👍2
Как работает SVG ViewBox

Данная статья с интерактивными примерами поясняет, как применять атрибут viewBox в SVG.

Raster vs. Vector
Render Image
Inline SVG
Coordinates
View Box
Pan & Zoom
Zoom to Square
Animate
React Spring
Scaling Stroke
Use Case

https://svg.bradwoods.io/lessons/viewbox

CodeBase | Frontend | #animate
👍2
⚙️ Что такое свойство backdrop-filter в CSS и зачем оно используется?

Свойство backdrop-filter применяет визуальные эффекты к фону за элементом, а не к самому элементу.

Чаще всего используется для blur-эффекта в модальных окнах и стеклянных интерфейсах


➡️ Пример:

<div class="card">Контент</div>

<style>
body {
background: url(bg.jpg) no-repeat center / cover;
}

.card {
width: 300px;
padding: 20px;
backdrop-filter: blur(10px);
background: rgba(255, 255, 255, 0.2);
border-radius: 12px;
}
</style>


🗣️ Популярные эффекты:

blur() — размытие
brightness() — яркость
contrast() — контраст
saturate() — насыщенность

backdrop-filter позволяет создавать современные UI-эффекты без изображений и JS, но требует полупрозрачного фона и поддержки браузером


CodeBase | Frontend | #Основы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
👩‍💻 Метод includes() в JavaScript и как он используется

Метод includes() проверяет, содержится ли элемент в массиве.

Возвращает true или false и не изменяет исходный массив


➡️ Пример:

Метод includes() в JavaScript и как он используется

Метод includes() проверяет, содержится ли элемент в массиве.
Возвращает true или false и не изменяет исходный массив


🗣️ В этом примере:

includes() выполняет проверку на наличие значения
• Работает корректно с примитивами (string, number, boolean)
• Читабельнее и безопаснее, чем indexOf() !== -1

includes() — простой и выразительный способ писать понятные проверки без лишней логики


CodeBase | Frontend | #JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Вот что происходит, когда просишь ИИ отцентрировать div

CodeBase | Frontend | #meme
😁101🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
В случае, если долго грузится пост или видео, рассмотрите, пожалуйста, возможность перейти в МАХ
😁6
This media is not supported in your browser
VIEW IN TELEGRAM
Найдена идеальная анимация для загрузочного экрана 🤔

CodeBase | Frontend | #meme
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁41
🖥 Этот CSS пора оставить в прошлом

Показываю, как переписать привычные решения — центрирование, сетки, эффекты и адаптивность — на свежие фичи вроде :has(), контейнерных запросов и subgrid. Коротко, практично и без JS.

🔗 Ссылка

CodeBase | Frontend | #article
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1
⚙️Тег <noscript> используется для отображения контента, если JavaScript отключен в браузере. Он позволяет предоставить альтернативное содержимое или сообщение для пользователей, которые не могут или не хотят использовать JavaScript.

Пример:
<noscript>
  <p>Please enable JavaScript to use this website.</p>
</noscript>


- Контент внутри <noscript> отображается только при отключенном JavaScript.
- Часто используется для информирования пользователей или предоставления базовой функциональности без JavaScript.

CodeBase | Frontend | #Основы
Please open Telegram to view this post
VIEW IN TELEGRAM
4
⚙️ Что такое атрибут role в HTML и зачем он используется?

Атрибут role используется для улучшения доступности веб-страниц. Он сообщает вспомогательным технологиям (например, экранным читалкам), какую функцию выполняет элемент.

➡️ Пример:

<!-- Обозначение навигационного меню -->
<nav role="navigation">
<ul>
<li><a href="#">Главная</a></li>
<li><a href="#">О нас</a></li>
</ul>
</nav>

<!-- Определение элемента как диалогового окна -->
<div role="dialog" aria-labelledby="dialog-title">
<h2 id="dialog-title">Подтвердите действие</h2>
<button>ОК</button>
</div>


🗣️ Почему полезно:

role="navigation" помогает читалкам распознавать меню.
role="dialog" делает <div> доступным как модальное окно.

CodeBase | Frontend | #Основы
Please open Telegram to view this post
VIEW IN TELEGRAM
5
Без вот этого вот

В случае, если долго грузится пост или видео, рассмотрите, пожалуйста, возможность перейти в МАХ
😁3
⚡️ Псевдокласс ::first-letter ⚡️

🔥 Этот псевдокласс позволяет стилизовать первую букву текстового элемента. Он часто используется для создания инициалов или других типографических эффектов.

➡️ Принятые свойства:

🔵 color — цвет первой буквы
🔵 background-color — цвет фона
🔵 font-family — шрифт первой буквы
🔵 font-size — размер шрифта
🔵 font-weight – насыщенность шрифта
🔵 line-height — высота строки
🔵 text-decoration — текстовое оформление (подчеркивание, зачеркивание)
🔵 text-transform — преобразование текста (в верхний регистр, в нижний регистр)
🔵 margin - внешние отступы
🔵 padding - внутренние отступы
🔵 border — граница первой буквы
🔵 float — выравнивание (например, слева, справа).
🔵 text-shadow — тень текста

CodeBase | Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
2
В случае, если долго грузится пост или видео, рассмотрите, пожалуйста, возможность перейти в МАХ
😁6
⚙️ Что такое свойство gap в CSS и зачем оно используется?

Свойство gap управляет расстоянием между элементами во flex- и grid-контейнерах.

Это современная замена margin для управления отступами между, а не вокруг элементов


➡️ Пример:

<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>

<style>
.container {
display: flex;
gap: 16px;
}

.item {
padding: 10px;
background: #007bff;
color: white;
}
</style>


🗣 gap — чистый и предсказуемый способ управлять расстояниями в современных интерфейсах.

CodeBase | Frontend | #CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥1
#kubernetes

Третья улица кубернетисов
. Дом 1.1.6 ©
😁2
👩‍💻 Метод every() в JavaScript и как он используется

Метод every() проверяет, удовлетворяют ли все элементы массива заданному условию.

Возвращает true, если условие выполняется для каждого элемента, иначе false.


➡️ Пример:

const numbers = [2, 4, 6, 8];

const allEven = numbers.every(num => num % 2 === 0);
console.log(allEven); // true


🗣️ В этом примере:

every() проверяет все числа на чётность
• Возвращает true, так как все элементы подходят
• Полезен для валидации данных (например, все ли поля заполнены)

every() часто используют для проверки массивов перед отправкой данных на сервер


CodeBase | Frontend | #JS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍41🔥1