This media is not supported in your browser
VIEW IN TELEGRAM
Мобильные Chrome и Safari могут автоматически делать первую букву заглавной. Для обычного текста это удобно, но в полях с логином, email, промокодом или техническим значением такая помощь только увеличивает число ошибок.
Добавьте атрибут:
<input autocapitalize="off">
Он подскажет браузеру, что при вводе не нужно автоматически менять регистр букв.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
Open-source-библиотека собрала звуковые эффекты для кнопок, уведомлений, загрузки, ошибок, успешных действий, переключателей и других состояний интерфейса.
Все звуки распределены по 12 стилям — среди них Minimal, Glass, Sci-Fi, Mechanical, Zen и Retro. Это помогает выдержать единый звуковой стиль во всём продукте.
Полезная находка для SaaS, игр и интерактивных интерфейсов. А разобраться, как внедрять такие решения в реальные проекты с помощью AI-инструментов, можно на курсе «ИИ для разработчиков»
#stack #ux_review
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🤔2🥰1
Кажется, у онлайн-обучения появился формат, которого давно не хватало 👇
🥰3
Forwarded from Proglib.academy | IT-курсы
Логично, что обучение тоже постепенно приходит к той же модели: не покупать отдельный курс под каждую новую тему, а иметь доступ ко всей библиотеке и выбирать, что актуально именно сейчас.
Такой формат недавно появился и в Proglib Academy. Вместо одного курса — доступ сразу ко всей библиотеке и новым материалам, которые появляются в подписке
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰2
Когда нужно отсортировать массив объектов сразу по нескольким полям — вместо вложенных if можно сделать так:
const sortBy = (arr, keys) => [...arr].sort((a, b) =>
keys.reduce((res, k) => res || (a[k] > b[k] ? 1 : a[k] < b[k] ? -1 : 0), 0)
);
Где пригодится:
— Сортировка таблиц и списков в UI;
— Подготовка данных из API;
— Фильтры («сначала по категории, потом по цене»).
reduce + sort = компактный способ заменить кучу if-else и делать гибкую сортировку по любым ключам.
🐸
#readme #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7🥰2
SR и гидрация обещают быстрый рендер, но на деле фронтендеры часто сталкиваются с расхождениями между сервером и клиентом.
#under_hood
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤4🥰3
This media is not supported in your browser
VIEW IN TELEGRAM
Достаточно добавить атрибут
disabled к тегу `<fieldset>` — и все элементы формы внутри него станут неактивными автоматически, без необходимости прописывать это для каждого по отдельности.#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍2🥰2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11
Что произойдёт с состоянием компонента, если изменить его key?
<UserForm key={userId} userId={userId} />
Допустим, userId меняется с 42 на 43.
❤️ — состояние сохранится, изменятся только props
🔥 — React пересоздаст компонент, и state сбросится
👍 — state сбросится только при использовании React.memo
И да: key нужен не только для списков. Его можно намеренно использовать, например, чтобы очистить форму при переключении на другого пользователя.
#career_merge
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤3👍2🥰1
ChartGPU — библиотека для визуализации больших датасетов через WebGPU вместо Canvas2D или WebGL.
Особенно интересно для дашбордов, мониторинга, финтеха и observability-интерфейсов, где обычный Canvas уже становится узким местом.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🥰2
Раньше, чтобы показать поповер по ховеру, нужен был JavaScript. Теперь — достаточно HTML.
interesttarget связывает элемент-триггер и поповер. Браузер сам обрабатывает hover, focus или long-press и показывает подсказку.
Можно совмещать с Popover API и Anchor Positioning для точного позиционирования.
Пока экспериментальная — работает в Chromium-браузерах (Chrome 135+, Edge 135+). В Firefox и Safari API ещё не реализован, поэтому стоит использовать фолбэк или JS-вариант для совместимости.
#readme #html
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
С помощью overflow-anchor можно обойтись без MutationObserver и scrollTo():
<div id="scroller">
...
<div id="anchor"></div>
</div>
#scroller * { overflow-anchor: none; }
#anchor { overflow-anchor: auto; height: 1px; }
Отключаем scroll anchoring для содержимого и оставляем его только на элементе в конце списка. Браузер использует его как якорь и удерживает скролл у нового контента.
#readme
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥰2🌚2
📐 Делаем fluid-значения в CSS предсказуемыми
clamp() отлично подходит для адаптивных размеров, но результат может быть вроде 19.7px или 143.2px.
Функция round() позволяет привязать вычисленное значение к нужному шагу:
Теперь размер будет двигаться по шагам: 16px → 20px → 24px → 28px → 32px. Можно использовать up, down, nearest или to-zero.
Особенно полезно для типографики, spacing и привязки элементов к layout grid.
📍 Навигация: [Вакансии]
🐸 Библиотека фронтендера
#readme #css
clamp() отлично подходит для адаптивных размеров, но результат может быть вроде 19.7px или 143.2px.
Функция round() позволяет привязать вычисленное значение к нужному шагу:
.title {
--size: clamp(1rem, 1rem + 2cqw, 2rem);
font-size: round(down, var(--size), 4px);
}
Теперь размер будет двигаться по шагам: 16px → 20px → 24px → 28px → 32px. Можно использовать up, down, nearest или to-zero.
Особенно полезно для типографики, spacing и привязки элементов к layout grid.
#readme #css
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍2🔥2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
sibling-index() и sibling-count() — позволяют получить позицию элемента среди соседей и их общее количество. Удобно, например, для динамических эффектов и декоративных раскладок.Теперь обе возможности доступны во всех основных браузерах.
А в экспериментальном режиме Firefox 154 также получил progress() — ещё один интересный шаг в сторону более гибной fluid-типографики.
#release_digest
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤3🥰1🎉1
🔥 — 1 2 3
❤️ — undefined undefined undefined
🥰 — 3 3 3
🤔 — 0 1 2
🐸 Библиотека фронтендера
#code_challenge #js
❤️ — undefined undefined undefined
🥰 — 3 3 3
🤔 — 0 1 2
#code_challenge #js
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰71❤19🔥4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Port-Whisperer — CLI для тех случаев, когда на 3000, 5173 или другом порту внезапно уже что-то запущено.
Полезная утилита для локальной разработки, особенно когда одновременно работают несколько проектов.
#stack
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰3🔥1🥱1
Разделённые поля, кастомные маски, десятки строк JS и ещё одна зависимость в бандле — всё это часто делают ради обычного одноразового кода.
#read_watch
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🥰3