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

Контакт: @Filgood777 (реклама, сотрудничество)
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
😁41😭1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️Text frame border animation rotation — Рамка из текста с анимацией вращение и эффектом при наведении.

Технологии: HTML, SCSS

🔗 Ссылка

CodeBase | Frontend | #animate
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Появился мощный инструмент для прохождения собеседований — Sobes Copilot.

Это нейросеть, которая подсказывает ответы прямо во время интервью, анализируя разговор в реальном времени.

Copilot работает незаметно в Zoom, Google Meet, Teams и других платформах. Поддерживает русский язык, не виден при демонстрации экрана и помогает держать уверенный темп диалога, даже если вопрос сложный или неожиданный.

Дополнительно Sobes Copilot делает пост-анализ собеседования: разбирает диалог после созвона, подсвечивает сильные и слабые моменты, удачные формулировки и зоны роста. Это позволяет понять, что сработало, а что стоит улучшить перед следующим интервью.

Если хотите проходить собесы спокойнее и увереннее — изучите возможности сервиса по ссылке. Это действительно меняет игру.

🎁 Промокод: SOBES26 — даёт 10% скидки на старт.
2
👩‍💻 Метод Array.from() в JavaScript и как он используется

Метод Array.from() создаёт настоящий массив из массивоподобных или итерируемых объектов
(например, NodeList, arguments, Set, Map).

➡️ Пример:

const buttons = document.querySelectorAll("button");

const btnArray = Array.from(buttons);
btnArray.forEach(btn => btn.classList.add("active"));


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

querySelectorAll возвращает NodeList, а не массив
Array.from() превращает его в массив
• после этого доступны map, filter, forEach и другие методы

Array.from() — это мост между «псевдомассивами» и полноценными массивами, без костылей и циклов


CodeBase | Frontend | #JS
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Jelly Squish Button — Кнопка с эффектом желе.

Технологии: HTML, SCSS, JS

🔗 Ссылка

CodeBase | Frontend | #animate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31😁1
🖥 Прагматичное руководство по современным цветам в CSS

Автор разбирает, как новые CSS-фичи для работы с цветом упрощают жизнь разработчику: что появилось, зачем это нужно и как использовать, не влезая в теорию цвета.

🔗 Ссылка

CodeBase | Frontend | #article
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
🖥 Какие новые HTML и CSS фичи полностью поддерживаются браузерами в 2026 году

Автор собрал HTML и CSS-фичи, которые к 2026 стали реально поддерживаться браузерами. Без теории и споров, просто список того, что уже можно смело тащить в прод.

🔗 Ссылка

CodeBase | Frontend | #article
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🔥1
👩‍💻 Объект

Кроме примитивных типов в JavaScript существуют и сложные — например, объект.

🗣️ Объект (object) — это набор свойств. Каждое свойство состоит из названия и значения. Название может быть строкой или символом, а значение может быть любым.

➡️ Объекты в JavaScript используются повсюду, особенно для хранения данных. Для уверенной работы с объектами необходимо знать, как создавать объект, как его изменять и как читать значения свойств.

Пустой объект без свойств можно создать парой фигурных скобок:

const cat = {}


✔️ Когда нужно создать объект со свойствами, то их описывают внутри фигурных скобок. Свойства указываются в формате имяСвойства : значение, между свойствами ставится запятая:

const book = {
title: 'Война и мир',
author: 'Лев Толстой',
pages: 1274,
isFinished: true
}


CodeBase | Frontend | #js
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
👩‍💻 Что такое тег <section>

Тег <section> создаёт независимый блок — например, блок новостей, блок с контактами или просто абзац с заголовком.

<section>
<h1>Заголовок первого блока</h1>
<p>Съешь ещё этих мягких французских булок, да выпей чаю.</p>
</section>

<section>
<h1>Заголовок второго блока</h1>
<p>Съешь ещё этих мягких французских булок, да выпей же чаю.</p>
</section>


Тег <section> всегда закрывается при помощи парного тега </section>.
Внутри <section> обязательно должен быть заголовок <h1>...<h6>.
Контейнеры <section> можно вкладывать друг в друга, как матрёшку.

💡 Если вы хотите просто объединить и стилизовать второстепенные элементы, которые не так важны для поисковика, лучше использовать <div>.

Некоторые начинающие разработчики неверно понимают семантику этого тега и заменяют им большую часть дивов на странице. Так делать не стоит.

Тегом <section> стоит оборачивать большие логические блоки на странице.

🛠 По спецификации допустимо размещать в каждом <section> заголовок первого уровня (<h1>). Несмотря на это, не стоит размещать на странице больше одного заголовка первого уровня. Это важно для правильной индексации сайта поисковыми роботами.


CodeBase | Frontend | #html
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥2
⚙️ Что такое свойство text-shadow в CSS и зачем оно используется?

text-shadow — это CSS-свойство, которое добавляет тень к тексту, улучшая его визуальное восприятие. Оно позволяет задавать цвет, смещение, размытие и создавать эффекты, такие как свечение или объёмный текст.

➡️ Пример:
<div class="text">Тень у текста</div>

<style>
.text {
font-size: 24px;
font-weight: bold;
color: darkblue;
text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); /* Тень с размитием */
}
</style>


🗣 В этом примере text-shadow делает текст более выразительным. Это свойство часто используется для стилизации заголовков, кнопок и декоративных элементов.

CodeBase | Frontend | #CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
🧬 Иммутабельность из коробки: toSorted(), toSpliced() и with()

Сколько раз вы ловили трудноуловимые баги в React или Redux из-за того, что методы sort(), reverse() или splice() незаметно мутируют оригинальный массив?

Раньше, чтобы обновить состояние, нам приходилось плодить поверхностные копии через спред-оператор.

// Старая школа (много шума)
const sortedUsers = [...users].sort((a, b) => a.age - b.age);

// А замена элемента по индексу вообще выглядела как пытка:
const updatedUsers = [...users];
updatedUsers[index] = newUser;

В стандарте ES2023 (Baseline 2023) JavaScript наконец-то получил нативные иммутабельные методы массивов. Они делают то же самое, но возвращают новый массив, оставляя оригинал нетронутым.

🚀 Как пишем теперь:

1. Сортировка и разворот

// Оригинал цел, получаем новый массив
const sorted = users.toSorted((a, b) => a.age - b.age);
const reversed = users.toReversed();

2. Удаление/вставка (вместо splice)

const months = ["Jan", "Mar", "Apr", "May"];

// Вставляем "Feb" на индекс 1 (ничего не удаляя)
const fixedMonths = months.toSpliced(1, 0, "Feb");
// ["Jan", "Feb", "Mar", "Apr", "May"]

3. 🔥 Метод with() - киллер-фича для React

Заменяет элемент по индексу без мутаций. Идеально для обновления конкретного элемента в массиве состояния.

const state = ['apple', 'banana', 'cherry'];

// Меняем 'banana' на 'mango'
const newState = state.with(1, 'mango');
// ['apple', 'mango', 'cherry']

💡Методы работают не только с массивами, но и с TypedArrays (например, Uint8Array). А метод with() отлично справляется с отрицательными индексами - arr.with(-1, newItem) заменит последний элемент массива без вычисления его длины!

CodeBase | Frontend | #js
👍3🎄21
⚡️ Прощай, 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