This media is not supported in your browser
VIEW IN TELEGRAM
Директива
@starting-style позволяет задать начальные стили для элемента в момент его появления на странице.Как это работает:
• Браузер применяет стили из @starting-style только в момент появления элемента;
• Затем элемент плавно переходит к основным стилям;
• Отлично работает с transition, без JavaScript.
Полезно для анимаций модальных окон, всплывающих блоков и динамически добавляемых элементов, когда важен плавный вход в интерфейс.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍10🤝9
DOM — это то, через что JavaScript управляет HTML: ищет элементы, создаёт новые узлы, вешает события и реагирует на действия пользователя.
На картинке — базовые методы
document и node, а также самые часто используемые события мыши, клавиатуры и форм.Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍13🤝8
С помощью тега
<area> можно сделать красивую навигацию, разметив обычную картинку областями и указав для них ссылки. Основные формы областей:
• shape="rect" — прямоугольная область;
• shape="circle" — круг;
• shape="poly" — произвольный многоугольник.
Самые ёмкие в записи формы
<area> — прямоугольник и круг, поскольку они требуют меньше всего координат. Если вам плохо от огромного кода, лучше отказаться от произвольных областей.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥10❤9
This media is not supported in your browser
VIEW IN TELEGRAM
GitHub Copilot — анализирует контекст файла и предлагает целые строки, функции и даже блоки логики прямо во время набора. Он понимает JavaScript, комментарии, имена переменных и стиль проекта, подстраивается под то, что уже пишешь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝17🔥9👍8👎1😁1
В этой шпаргалке отражены инструменты, позволяющие безопасно работать с кэшами без утечек памяти, учитывать особенности сборки мусора, выполнять глубокое копирование сложных структур данных, точно измерять время выполнения кода, а также управлять порядком выполнения задач и microtask в прикладных сценариях.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤10👍8
❤15🤝10🔥7
Определяем, предпочитает ли пользователь уменьшенную анимацию!
Современные ОС позволяют пользователю снизить количество анимаций. Браузер транслирует это предпочтение через
Проверяем текущее состояние:
Реагируем на изменение настройки в системе:
Событие
Применяем режим при загрузке приложения:
Это позволяет синхронизировать состояние интерфейса с системными настройками пользователя.
🔥 Такой подход автоматически учитывает настройки доступности пользователя, снижает визуальную нагрузку и улучшает UX без дополнительных переключателей.
📣 Code Ready | #практика
Современные ОС позволяют пользователю снизить количество анимаций. Браузер транслирует это предпочтение через
media query prefers-reduced-motion, и интерфейс может адаптироваться автоматически.Проверяем текущее состояние:
const motionMQ = window.matchMedia(
"(prefers-reduced-motion: reduce)"
);
const isReducedMotion = motionMQ.matches;
matches читается синхронно и отражает текущее системное состояние на момент инициализации скрипта.Реагируем на изменение настройки в системе:
motionMQ.addEventListener("change", ({ matches }) => {
document.documentElement.dataset.motion =
matches ? "reduced" : "full";
});Событие
change срабатывает при изменении системной настройки, без polling и лишней логики.Применяем режим при загрузке приложения:
document.documentElement.dataset.motion =
isReducedMotion ? "reduced" : "full";
Это позволяет синхронизировать состояние интерфейса с системными настройками пользователя.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤7👍7
Например,
:nth-child(3) выберет третий элемент, :nth-child(even) — все чётные, а :nth-child(5n-1) — элементы по заданному шаблону.На картинке — наглядная шпаргалка по синтаксису
:nth-child(): числа, ключевые слова и формулы, которые чаще всего используются в верстке.Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍10❤6🤝1
Очень часто фокус делают так:
button:focus {
outline: none;
}Или наоборот, фокус всегда виден, даже при клике мышью, что выглядит странно и раздражает.
Современный CSS даёт решение:
button:focus-visible {
outline: 2px solid #4da3ff;
}:focus-visible показывает фокус только тогда, когда он реально нужен: при навигации с клавиатуры, при accessibility-сценариях и не показывает его при клике мышью.Если элемент получил фокус мышью — стиля не будет.
Если клавиатурой — будет.
Для полного контроля можно добавить:
button:focus {
outline: none;
}Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🤝9🔥8
В этой статье:
• Пошагово показывают, как добавить на страницу интерактивное изменение размера элементов; • Разбирают базовую логику JavaScript-обработчиков и их аналоги для сенсорных экранов; • Показывают, как аккуратно управлять DOM-событиями и вычислять новые размеры; • Предоставляют готовое решение, которое можно сразу подключить к вашему проекту и кастомизировать. 🔊 Продолжайте читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥8🤝7😁1
Атрибут
dir устанавливает направление вывода текста внутри элемента. Действие атрибута наследуется от родительского элемента, но может быть переопределено.Принимает одно из следующих значений:
• ltr — текст будет написан слева направо. Такое направление текста используется, например, для русского или английского языков;
• rtl — текст будет написан справа налево. Актуально, например, для арабских языков;
• auto — направление текста определяется браузером.
Может быть применён к любому HTML-элементу, но не для всех элементов имеет смысл.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22🔥8🤝8
Forwarded from Frontend VK Hub
This media is not supported in your browser
VIEW IN TELEGRAM
console.log('🎄 Time for presents!')
Новый год — время радовать близких людей. Поэтому мы подготовили подарки для наших подписчиков — промокоды на год от Облака Mail и VK Музыки!
Условия участия простые:
🔹подпишитесь на наш канал @frontendhubvk
🔹 нажмите кнопку «Участвовать»
🔹 дождитесь 30 декабря — в этом посте мы выберем случайным образом 6 победителей
В ожидании итогов не забывайте почитать по ссылке информацию об организаторе, правилах и призах. И регулярно есть мандарины!
Новый год — время радовать близких людей. Поэтому мы подготовили подарки для наших подписчиков — промокоды на год от Облака Mail и VK Музыки!
Условия участия простые:
🔹подпишитесь на наш канал @frontendhubvk
🔹 нажмите кнопку «Участвовать»
🔹 дождитесь 30 декабря — в этом посте мы выберем случайным образом 6 победителей
В ожидании итогов не забывайте почитать по ссылке информацию об организаторе, правилах и призах. И регулярно есть мандарины!
👎4❤2
Форматируем дату по приоритетной локали пользователя!
Частая задача: выводить дату в понятном формате без ручного указания региона. Браузер предоставляет список предпочтительных локалей, а
Базовый вывод даты (используем первую предпочтительную локаль или системную):
Более читаемый формат в современных браузерах:
Собираем собственный формат даты (жёсткий порядок и разделители задаём сами):
🔥 Важно:
📣 Code Ready | #практика
Частая задача: выводить дату в понятном формате без ручного указания региона. Браузер предоставляет список предпочтительных локалей, а
Intl.DateTimeFormat форматирует дату на основе данных CLDR.Базовый вывод даты (используем первую предпочтительную локаль или системную):
const now = new Date();
const locale = navigator.languages?.[0] || navigator.language;
const formatter = new Intl.DateTimeFormat(locale);
console.log(formatter.format(now));
// Примеры: 12/24/2025 или 24.12.2025
Более читаемый формат в современных браузерах:
const pretty = new Intl.DateTimeFormat(locale, {
dateStyle: "medium",
timeStyle: "short"
});
console.log(pretty.format(now));
// Примеры: Dec 24, 2025, 14:30 или 24 дек. 2025 г., 14:30Собираем собственный формат даты (жёсткий порядок и разделители задаём сами):
const parts = new Intl.DateTimeFormat(locale, { day:"2-digit", month:"2-digit", year:"numeric" })
.formatToParts(now)
.filter(p => p.type !== "literal");
const obj = {};
for (const p of parts) obj[p.type] = p.value;
console.log(`${obj.day}.${obj.month}.${obj.year}`);
// Пример: 24.12.2025locale влияет только на формат отображения. Часовой пояс определяется окружением браузера, при необходимости его можно зафиксировать через опцию timeZone (IANA, например UTC).Please open Telegram to view this post
VIEW IN TELEGRAM
🤝14🔥8👍7❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь собраны структурированные документации по JS и смежным технологиям, ориентироваться в темах быстро и удобно. Можно подтянуть понимание языка: методы массивов, строки, даты, поведение консоли, обработка событий и многое другое. Открываешь документацию, понимаешь механику, ограничения и реальные сценарии использования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥7🤝7