WebDev+ | Веб-разработка
Open in Telegram
Присоединяйтесь к нашему каналу и погрузитесь в мир веб-разработки Связь: @devmangx
Show more8 233
Subscribers
+824 hours
+207 days
+28830 days
Posts Archive
Прогрессивные CSS-индикаторы пагинации без JS c anchor positioning
nav::before { position-anchor: --h; }
nav::before { left: anchor(left); }
a:hover { anchor-name: --h; }
Идея такая: наводишься на ссылку, у неё появляется якорное имя --h, а nav::before привязывается к этому якорю через position-anchor и выравнивается по left: anchor(left). Для разметки используй псевдоэлементы самого nav: ::before — для индикатора наведения (intent), ::after — для индикатора текущей страницы (current).
@WebDev_Plus+1
Самый гибкий паттерн, который я нашел для построения составных интерфейсов — это headless store, то есть хранилище состояния без привязки к UI.
Сначала ты создаешь экземпляр стора — локальный или глобальный, потом передаешь его в компоненты напрямую или через контекст. Такой подход дает больше контроля, чем render props, HOC, refs или классические compound-компоненты.
Store отвечает за три простые вещи: хранит и управляет состоянием как единым источником правды, предоставляет методы для обновления состояния и выполняет сайд-эффекты, когда происходят изменения или переходы. Этого достаточно, чтобы собирать даже довольно сложные интерфейсы
@WebDev_Plus
Как Apple делает эти безумные видеопереходы при прокрутке?
Давайте воссоздадим это с помощью чистого CSS с анимацией, управляемой прокруткой, и view-timeline.
Именно так, никаких слушателей событий прокрутки
Получить фрагменты кода, подсказки и полное руководство можно здесь
@WebDev_Plus
Не знаете, какие единицы измерения использовать в CSS?
px, rem, em, fr, %, vh... Их слишком много 😡
Эта диаграмма подскажет вам решение и объяснит его.
Решите с помощью информации, какая единица является правильной.
→ http://whatunit.com
@WebDev_Plus
Динамическое позиционирование тултипа с использованием Anchor Positioning
С помощью anchor positioning можно «привязать» один элемент к другому и при этом гарантировать, что он останется видимым на экране, даже если привязанный элемент смещается. Теперь представим, что этот элемент — тултип. А что насчет его «хвостика»? Его тоже можно настроить так, чтобы он всегда указывал на якорь.
#anchor {
position: absolute;
anchor-name: --anchor;
}
#tooltip {
--d: 1em; /* расстояние между якорем и тултипом */
--s: 1.2em; /* размер хвостика */
position: absolute;
position-anchor: --anchor;
/* размещаем тултип сверху */
position-area: top;
bottom: var(--d);
margin-top: var(--d); /* этот margin наследуется псевдоэлементом, здесь он ничего не делает */
/* если сверху тултип не помещается — переключаемся вниз (margin перевернётся автоматически) */
position-try-fallbacks: flip-block;
anchor-name: --tooltip;
}
/* хвостик тултипа */
#tooltip:before {
content: "";
position: fixed;
z-index: -1;
width: var(--s);
background: inherit;
/* вертикальное положение относительно тултипа */
top: calc(anchor(--tooltip top) - var(--d));
bottom: calc(anchor(--tooltip bottom) - var(--d));
/* горизонтальное положение относительно якоря */
left: calc(anchor(--anchor center) - var(--s)/2);
margin: inherit; /* делает магию — скрывает верх или низ формы в зависимости от положения */
/* форма стрелки */
clip-path: polygon(
50% .2em,
100% var(--d),
100% calc(100% - var(--d)),
50% calc(100% - .2em),
0 calc(100% - var(--d)),
0 var(--d)
);
}
https://css-tip.com/tooltip-anchor/
@WebDev_PlusЗакреплённый сайдбар с переходом
.layout:has(:popover-open) {
grid-template-columns: var(--sidebar-width) 1fr;
}
aside:popover-open {
translate: 0 var(--ctrl);
height: var(--extend);
}
Чистый CSS, ноль JS для перехода лейаута.
Куча мелких настроек, с которыми можно поиграться
@WebDev_PlusОн тимлид в российском бигтехе! Но ещё с универа мечтает о переезде в Лондон!
Он отправил уже несколько тысяч откликов на вакансии! Позади — сотни собеседований и столько же отказов 😳
Какое-то время он даже жил в лесу, чтобы ничего не отвлекало его от подготовки к интервью.
Он 14 лет в ИТ: писал сервисы, менеджерил команды, ломал монолиты и собирал новые 😅
Он видел всё — и даже то, чего не стоило бы видеть.
Весь свой опыт, знания и советы он публикует в своём канале, говорит простым и понятным языком.
Подпишись на его канал @artur_speaking
Узнай первым о том, что тебя ждёт впереди, чтобы оставить конкурентов далеко позади, добраться до самых вершин карьеры — и наказать своих врагов и завистников 💀
Chrome DevTools — без сомнений, мой любимый MCP-сервер.
Запустив всего две команды в терминале, ты можешь подключить Claude Code прямо к браузеру с полным доступом:
Запускаем Chrome:
google-chrome --remote-debugging-port=9222 --user-data-dir="$HOME/.config/google-chrome"
Добавляем MCP, который коннектится к браузеру:
claude mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest -u http://localhost:9222
@WebDev_PlusИспользуй CSS-свойства вроде blur и opacity в анимациях, чтобы всё выглядело плавно, а не топорно.
Размытие, изменения прозрачности и пружинная анимация и есть причина, по которой анимации у Apple выглядят гладко.
@WebDev_Plus
Раньше: 30 минут перетаскивания и сортировки папок.
Теперь: "Warp, наведи порядок в этом беспорядке, пожалуйста".
Вот это ИИ, который делает мою жизнь лучше, хахаха.
→ http://midu.link/warp
@WebDev_Plus
Visual Effect теперь с открытым исходным кодом
https://github.com/kitlangton/visual-effect
Со звуком: https://effect.kitlangton.com/effect-repeat-while-output
@WebDev_Plus
может быть полезно → добавьте это в ваш css (сверху), это отменит избыточный вес шрифта tailwind на сайте, и вес шрифта будет выглядеть точно так же, как на figma.
@WebDev_Plus
Меняй значение border-radius в зависимости от размера контейнера или экрана — всего одной строкой кода.
Условный Border Radius на CSS
.box {
border-radius: calc(sign(100cqi - 100%) * 2rem);
}
По умолчанию значение равно 2rem. Когда элемент занимает всю ширину (его ширина равна ширине контейнера), радиус скругления становится 0.
Если контейнер не задан, 100cqi автоматически подставит 100vw (ширину экрана).
Попробуй менять размер экрана или контейнера в демке , чтобы увидеть, как это работает:
@WebDev_PlusВеб-дизайнеры и разработчики, это может стать библиотекой анимации следующего уровня
https://reactbits.dev/
@WebDev_Plus
Лучшая утилита для создания софтвэр диаграмм.
К тому же бесплатная и совместимая с GitHub!
Идеально подходит для UML, потоков и процессов.
Экспорт в изображение, PDF, HTML и другие форматы.
→ http://app.diagrams.net
@WebDev_Plus
Команда ядра React, наверное, спит, а я выкладываю еретические советы по React
Знаете ли вы, что хуки можно использовать прямо внутри JSX?
Конечно, так делать не стоит, но технически можно.
Это нарушает первое правило хуков, но всё равно работает, потому что хук вызывается в одном и том же порядке каждый раз.
@WebDev_Plus
ПРО СОВЕТ: REST — это переинжиниринг. Просто сделайте один эндпоинт /api, который напрямую принимает SQL-запросы.
Из соображений безопасности я добавил в сниппет AI-проверку.
@WebDev_Plus
Опа, тут бывший сеньор одного из IT-отделов Яндекса Игорь Никитин выкатил целый канал про Python — и это лучшее, что есть в рунете по теме.
Качественные гайды. Советы от известных прогеров. Тематические мемасы. Короче, ничего лишнего.
Хватит душить питона, учись его кодить: https://t.me/+MHz6ewg03OVkZjcy 🐍
Создайте анимацию входа на вашу веб-страницу с помощью SVG и нескольких строк CSS.
@WebDev_Plus
CSS-анимация автоизменения высоты с использованием grid
li > div[inert] {
grid-template-rows: 0fr;
}
li > div {
grid-template-rows: 1fr;
transition: grid-template-rows .26s;
}
стрелки для навигации 📍
@WebDev_Plus