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

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

@webdev_plus

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

Связь: @devmangx
Subscribers
7.91K
Photos
652
Videos
288
Links
805

Showing posts older than #1428 · Back to latest

Older Posts 20 shown
Post #1427 630
Можно закрепить скролл чата внизу через CSS-свойство overflow-anchor, без MutationObserver и без вызовов scrollTo().
<div id="scroller">
...
...
<div id="anchor"></div>
</div>
#scroller * {
overflow-anchor: none;
}

#anchor {
overflow-anchor: auto;
height: 1px;
}


В браузерах по умолчанию включён scroll anchoring, чтобы уменьшать визуальные сдвиги при изменении DOM.
Если отключить его у дочерних элементов и оставить включённым только на маленьком (1px) якоре внизу, скролл автоматически удерживается на новых элементах и «едет» вниз вместе с добавляемым контентом.

@WebDev_Plus
Post #1426 598
Старый, но рабочий трюк: в тёмной теме толщину вариативного шрифта стоит делать немного меньше, потому что светлый текст на тёмном фоне визуально выглядит жирнее, чем тёмный текст на светлом фоне.

CSS-Tricks — Dark Mode and Variable Fonts

@WebDev_Plus
Post #1425 646
Используй CSS @property, чтобы открыть доступ к таким вещам, как:

Анимированные конические градиенты
Вращающиеся рамки и лоадеры
Hover-переходы для точек градиента


Обычная переменная --angle не работает для анимации точек градиента, потому что CSS не понимает, как интерполировать такое значение.

@property решает это через типы вроде <angle>, <color> и другие.
@property --angle {
syntax: '<angle>';
inherits: false;
initial-value: 0deg;
}

.card {
--angle: 0deg;

background: linear-gradient(
var(--angle),
#38bdf8,
#0ea5e9,
#2563eb,
#1e40af
);

transition: --angle 0.8s ease;
}

.card:hover {
--angle: 45deg;
}


За счёт initial-value не нужно каждый раз вручную задавать стартовое значение.

@WebDev_Plus
Post #1424 581
Жди завершения всех промисов, даже упавших

Promise.allSettled() дожидается завершения каждого промиса — успешного или с ошибкой.
⋅ Возвращает { status: 'fulfilled', value } или { status: 'rejected', reason }
⋅ Отлично подходит для пакетных операций

Подробнее 👇
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled

@WebDev_Plus
Post #1422 672
HTML совет 💡

Можно использовать атрибут translate, чтобы указать, должен ли контент элемента переводиться встроенными средствами браузера.

@WebDev_Plus
Post #1421 778
Создание нового логотипа не должно занимать много времени.

Я хотел инструмент быстрый, простой и бесплатный.

Поэтому собрал Logo Lattice.

Полностью бесплатный.
Работает прямо в браузере.
Полный контроль и владение созданными результатами.

@WebDev_Plus
Post #1420 674
Атрибут tabindex в HTML управляет тем, может ли элемент получать фокус с клавиатуры и в каком порядке происходит навигация по элементам через клавишу Tab.

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

Основные моменты:

▪️ tabindex="0" — добавляет элемент в естественный порядок фокуса
▪️ tabindex="-1" — фокус возможен только программно через JS, но не через Tab
▪️ положительные значения (1, 2 и т.д.) — задают кастомный порядок обхода
▪️ работает как для интерактивных, так и для неинтерактивных элементов

@WebDev_Plus
Post #1419 789
React Doctor v2 уже здесь

Ваш агент пишет плохой React-код — этот инструмент это отлавливает.

Работает с Next.js, Vite и React Native. Можно привести приложение в порядок за несколько минут.

npx react-doctor@latest

https://github.com/millionco/react-doctor

@WebDev_Plus
Post #1418 668
Infinity в JavaScript используется нечасто.

Но array.flat(Infinity) неожиданно полезен при работе с глубоко вложенными массивами

#JavaScript
Post #1417 743
Используй view-transitions и clip-path, чтобы анимировать переключение темы вместо простого переключения с transition

document.documentElement.animate(
{ clipPath: ["inset(0 0 100% 0)", "inset(0)"] },
{ pseudoElement: "::view-transition-new(root)", duration: 600 },
)


::view-transition-new(root) {
animation: none;
mix-blend-mode: normal;
}


Здесь clip-path задаёт раскрытие анимации сверху вниз.

@WebDev_Plus
Post #1416 649
Ускорение рендеринга с помощью свойства CSS content-visibility: auto

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

Используется совместно с contain-intrinsic-size.

Обеспечивает практически нулевую стоимость реализации ленивой отрисовки.

https://developer.mozilla.org/en-US/docs/Web/CSS/content-visibility

@WebDev_Plus
Post #1413 716
Реагирование на изменение размеров элемента, а не только окна

«Наблюдатель изменения размеров» срабатывает при изменении габаритов любого элемента, подходит для адаптивных компонентов.

⋅ отслеживает padding box, content box или border box
⋅ работает при динамических изменениях DOM

https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver

@WebDev_Plus
Post #1412 682
JavaScript-совет:

Используй new Notification() для отправки нативных уведомлений в браузере (без отдельного приложения).

@WebDev_Plus
Post #1411 713
Container scroll-state queries позволяют применять стили к элементам в зависимости от состояния скролла контейнера — зафиксирован, привязан к точке, прокручиваемый

.section-header {
...
container-type: scroll-state;
container-name: sticky-hd;
}

@container sticky-hd scroll-state(stuck: top) {
...
}


Поддерживаемые состояния:

- stuck — элемент в состоянии position: sticky и «прилип» к краю
- snapped — элемент зафиксирован через scroll snap
- scrollable — контейнер имеет область прокрутки

Это даёт возможность убирать обработчики скролла на стороне JavaScript и переносить логику в CSS, без лишних подписок на события и перерасчётов.

@WebDev_Plus
Post #1410 707
Это потрясающее расширение для VS Code, которое за секунды превращает вашу структуру папок в правильно отформатированное текстовое представление

Идеально подходит для создания чистой и структурированной документации без лишних усилий

#ресурсы

@WebDev_Plus
Post #1409 694
Переключаем режим редактирования для всего документа

Когда мы изменяем HTML, обычно нужно дождаться обновления страницы, чтобы увидеть изменения. Вы можете сэкономить время, используя designMode, который позволяет мгновенно изменять страницу

Чтобы переключить режим разработки, введите следующий код:
document.designMode="on"


#советы

@WebDev_Plus
Post #1408 717
кто-то выложил в открытый доступ набор компонентов для карт в стиле shadcn для React.

проект называется mapcn. поддерживает темы, полностью композиционный, построен на MapLibre GL, поэтому даёт полный функционал картографии без оплаты Mapbox.

100% открытый исходный код.

@WebDev_Plus
Post #1407 782
TypeScript официально отказывается от JavaScript. Грядущая версия (7.0) полностью переписана на Go, и скорость компиляции выросла в 10 раз.

Годами основной компилятор (tsc) был написан на самом TypeScript и выполнялся в среде Node.js. С точки зрения стратегии это было отличным решением для привлечения разработчиков, но с инженерной стороны — серьёзная проблема для крупных проектов. JavaScript по своей природе однопоточный и сильно ограничен в задачах с интенсивной нагрузкой на процессор.

В больших проектах, когда кодовая база превышает миллион строк, время сборки становится критичным. Разработчик меняет одну строку в интерфейсе и ждёт завершения проверки типов.

Переход на Go (нативный порт) полностью устраняет эту проблему. Ключевой момент — многопоточность.
Компилятор теперь использует все ядра процессора через горутины. Большой код разбивается на части и анализируется параллельно. Накладные расходы V8 больше не участвуют в процессе.

Эффект не только в удобстве разработки. В корпоративной среде это означает более быстрые пайплайны CI/CD на серверах и заметное снижение затрат на облачные сборки.

@WebDev_Plus
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →