Senior Frontend - javascript, html, css
Senior Front - канал для frontend программистов, практические задачки, проверки знаний, интересные статьи Админ, сотрудничество, реклама:@seniorFrontPromo, @maria_seniorfront Канал в реестре РКН https://rknn.link/bsU
Ko'proq ko'rsatish📈 Telegram kanali Senior Frontend - javascript, html, css analitikasi
Senior Frontend - javascript, html, css (@seniorfront) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 23 446 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 5 670-o'rinni va Rossiya mintaqasida 27 878-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 23 446 obunachiga ega bo‘ldi.
12 Noyabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -336 ga, so‘nggi 24 soatda esa -8 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 5.38% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 2.88% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 262 marta ko‘riladi; birinchi sutkada odatda 675 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 2 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent css, node.js, api, архитектура, html kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Senior Front - канал для frontend программистов, практические задачки, проверки знаний, интересные статьи
Админ, сотрудничество, реклама:@seniorFrontPromo, @maria_seniorfront
Канал в реестре РКН https://rknn.link/bsU”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 13 Noyabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
navigator.geolocation.getCurrentPosition(), человек жмёт «Блокировать» и просит браузер запомнить выбор. С этого момента кнопка на сайте просто молча не работает. Чтобы передумать, надо искать сайт в настройках браузера.
В HTML появился элемент-кнопка <geolocation>. Нажатие на него либо сразу срабатывает, либо снова показывает запрос. Пунктов там два: «разрешить всегда» и «разрешить один раз». Отказ теперь означает просто закрыть окно, поэтому сайт не застревает в вечном запрете.
В анонсе Chrome приводят данные ZapImóveis: 54,4% пользователей, ранее заблокировавших доступ, разрешили его, увидев элемент.
Оговорка: пока элемент работает только в Chrome и родственных браузерах. В остальных срабатывает запасной вызов старого API, и там проблема остаётся.
Автор предполагает, что для камеры и микрофона с похожим <usermedia> это ещё важнее.
👍 - если было полезно
👉 @seniorFrontanimation-timeline: scroll(root block) привязывает его ко всей странице.
@keyframes drift-up {
from {
transform: translateY(12vh);
}
to {
transform: translateY(-20vh);
}
}
Пока страница прокручивается до конца, колонка дополнительно уезжает вверх. Поэтому кажется, что она движется быстрее соседней.
Scroll-Driven Animations есть не во всех браузерах, так что правило обёрнуто в @supports. Без поддержки останется обычная галерея из двух колонок.
В статье ещё лёгкий зум каждого фото при прокрутке и вариант, где колонка едет навстречу скроллу.
👍 - если было полезно
👉 @seniorFrontHTML, CSS, JavaScript, попробуешь TypeScript и Angular и увидишь, как всё это объединяется в одном проекте.
Никаких вложений — просто приходи, пробуй и разбирайся, твоё это или нет.
↗️ Попробовать бесплатно
Реклама. ИП Чернова О.А., ИНН:771399721044.shape-gradient { border: 10px solid #0000; /* a transparent border */ border-shape: shape() | polygon() | etc; /* the shape */ background: linear-gradient(#0077b6,#f4a261) border-area; /* gradient + border-area */}
Вместо shape() | polygon() | etc подставляете одну свою фигуру.
Есть важная оговорка: пока это работает только в браузерах на Chromium.
В демо на CodePen к заметке собраны сложные фигуры, нарисованные этим приёмом.
👍 - если было полезно
👉 @seniorFront.masonry {
display: grid-lanes;
grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
gap: 1rem;
}
Колонок столько, сколько влезет, каждая не уже 14rem. Следующая карточка обычно идёт в самую короткую колонку, общих рядов нет.
В прод пока рано: grid-lanes работает в Safari 26.4 и новее, в остальных браузерах поддержка ещё в пути, а спецификация остаётся черновиком. Автор советует держать запасную раскладку попроще.
👍 - если было полезно
👉 @seniorFrontinherits у @property. Их можно положить в кастомное свойство и проверять в style-запросах контейнера.
Пример из статьи: фильтр сумок на двух чекбоксах. Свойства --isBackpack и --isDuffel регистрируют через @property с syntax: "true | false" и false по умолчанию. На :root правило :has(#isBackpack:checked) ставит свойству true.
Дальше вместо горы селекторов с :checked и :not(:checked) пишем одно понятное условие:
@container root style(--isBackpack: true) and style(--isDuffel: false)
Внутри прячем всё, кроме рюкзаков.
Свойства сделаны ненаследуемыми. Поэтому :root нужно дать container-name: root, иначе запросу в глубоком потомке не на кого сослаться.
Весь фильтр со всеми комбинациями чекбоксов разобран в статье.
👍 - если было полезно
👉 @seniorFront/* Only produces 0px, 15px, 30px, 45px, or 60px */
top: random(0px, 60px, 15px);
В статье на Smashing Magazine слово разбито на отдельные буквы, и каждая получает свой лёгкий наклон и сдвиг. Заголовок выглядит как старая типографская печать, а при наведении буквы выпрямляются.
Поддержка пока не везде. Safari уже умеет, в Chrome функция приходит с версией 156, от Firefox пока только положительные сигналы. Поэтому ровный вариант пишем по умолчанию, а случайность прячем внутрь @supports.
В статье ещё прыгающие буквы, веер карт на скролле и боке из размытых слов.
👍 - если было полезно
👉 @seniorFrontrepeat(auto-fill, ...): колонок в ней ровно столько, сколько влезает по ширине. Темани Афиф показывает, как каждый элемент вычисляет свои координаты на чистом CSS, без JavaScript.
Число колонок считается из ширины контейнера (100cqw), ширины колонки и отступа, с округлением вниз. Порядковый номер элемента даёт sibling-index(). Делим номер на число колонок: целая часть станет номером строки --x, остаток номером колонки --y.
При ресайзе всё пересчитывается само. А с новой функцией if() по этим значениям можно красить, например, четвёртую строку (счёт идёт с нуля):
.container > * { background: if(style(--x = 3): red;)}
Условие у трюка одно: колонки должны быть одинаковой ширины. Строки при этом могут быть разной высоты.
В статье есть и выборки посложнее: последняя строка, конец первой строки и даже диагональ.
👍 - если было полезно
👉 @seniorFrontmargin-trim. Пишем margin-trim: block-start на сам контейнер с колонками, и браузер обрезает верхний отступ у элемента, который стоит в его начале. В Chrome это работает с версии 155.
Подвох в Safari. Он понимает margin-trim с версии 16.4, но только для обычных блоков, а для колонок нет. Поэтому проверка через @supports там проходит, а отступ над колонками всё равно остаётся.
А в обычной блочной раскладке у margin-trim есть и другие полезные применения, и их уже можно пробовать.
👍 - если было полезно
👉 @seniorFrontfeTurbulence рисует облачный шум, похожий на разводы. feDisplacementMap сдвигает каждый пиксель маски на величину из этого шума, и прямая кромка становится изрезанной, как береговая линия.
Хитрость в том, что шум стоит на месте, а маска едет сквозь него. Поэтому край меняет форму на ходу: краска то забегает вперёд, то отстаёт, будто впитывается в бумагу.
Есть одна ловушка. Область фильтра по умолчанию всего на 10% больше элемента. Сдвинутые пиксели вылезают за неё, край обрезается по линейке, и эффект пропадает. Область нужно расширить: x="-35%" y="-35%" width="170%" height="170%".
А ещё в статье карандашные линии, которые рисуются сами, золотые искры и звук кисти без единого аудиофайла, и всё без библиотек.
👍 - если было полезно
👉 @seniorFrontname и age. Меняется age, и заодно перерисовывается компонент, которому нужен только name. React сравнивает value провайдера целиком, а это каждый раз новый объект. useMemo и React.memo тут не спасают.
Выход в статье простой. Через Context передают не данные, а объект доступа к ним: { get, set, subscribe }. Он создаётся один раз, ссылка не меняется, и сам контекст никого не ререндерит.
Данные живут в useRef. Каждый компонент через useSyncExternalStore подписывается только на своё поле. Ввели возраст, и перерисовался один инпут возраста.
Есть цена: обновление такого стора внутри startTransition всё равно станет блокирующим, в фон его не увести.
В статье объяснено, зачем здесь именно useSyncExternalStore и почему store нельзя заворачивать в useMemo.
👍 - если было полезно
👉 @seniorFront<NoteEditorClient
key={note.id}
value={note.contentHtml}
onChange={(nextHtml) =>
updateNoteContent(note.id, nextHtml)
}
/>
Новый key заставляет React размонтировать старый редактор и создать чистый. Состояние предыдущей заметки в следующую не переходит.
Обратная сторона: при каждом переключении история undo начинается с нуля.
В статье этот редактор ещё получает автосохранение после паузы во вводе и режим чтения с подсветкой кода.
👍 - если было полезно
👉 @seniorFrontoffset-path задаёт путь, а offset-distance ставит элемент в точку на нём. Путь не обязательно рисовать вручную: подойдёт рамка родителя, offset-path: border-box.
Например, с offset-distance: 20% кружок встаёт на рамку, пройдя пятую часть периметра. Пикселей нет, поэтому при смене размера блока всё подстраивается.
Дальше автор анимирует offset-distance через @keyframes, а значения берёт из CSS-функции random(). Кружок бегает по краю в случайные точки. Сработало, только когда у каждого вызова появился свой ключ вроде --k1.
Главная загвоздка в поддержке: на момент статьи random() есть в Safari, а в Chrome только за флагом. В других браузерах элемент просто стоит на месте, так что пригодится запасной вариант через @supports.
В статье из этого вырастают светящийся шар и собачка, гуляющая по краю блока.
👍 - если было полезно
👉 @seniorFront