Шпаргалка по браузерным API, которые помогают получать размеры, координаты и полные измерения контента, а также анализировать итоговые CSS-стили. Включает инструменты для управления анимациями через requestAnimationFrame. Подходит для задач, связанных с позиционированием, динамической версткой, оптимизацией анимаций и отладкой поведения элементов в интерфейсе.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥9❤6🤝2
Например,
git push отправляет твои изменения на сервер, а git checkout позволяет быстро переключаться между ветками.На картинке — 12 самых нужных команд, которые стоит держать под рукой.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤12👍9🤝1
Извлекаем и обрабатываем выделенный текст — Selection API
Selection API позволяет получать выделение пользователя в DOM (кроме
Получаем выделенный текст:
Отслеживаем изменения выделения:
Извлекаем детали выделения:
Удобный хелпер:
Использование:
🔥 Такой пример полезен для практики работы с браузерными
📣 Code Ready | #практика
Selection API позволяет получать выделение пользователя в DOM (кроме
<input> и <textarea>, где нужно использовать selectionStart/selectionEnd). API подходит для подсветки, анализа, сохранения выделений и запуска контекстных действий.Получаем выделенный текст:
const text = window.getSelection().toString();
console.log("Выделено:", text);
Отслеживаем изменения выделения:
document.addEventListener("selectionchange", () => {
const t = window.getSelection().toString();
if (t) console.log("Новое выделение:", t);
});Извлекаем детали выделения:
const sel = window.getSelection();
console.log("anchorNode:", sel.anchorNode);
console.log("focusNode:", sel.focusNode);
console.log("rangeCount:", sel.rangeCount);
Удобный хелпер:
function onSelect(callback) {
const handler = () => {
const text = window.getSelection().toString().trim();
if (text) callback(text);
};
document.addEventListener("selectionchange", handler);
return () => document.removeEventListener("selectionchange", handler);
}Использование:
const unsubscribe = onSelect(selected => {
console.log("Пользователь выделил:", selected);
});API, реакцией на системные события и динамическим управлением интерфейсом.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍10❤8
Тег
<track> используется внутри <video> или <audio> и добавляет к медиаконтенту текстовые дорожки: субтитры, описания, переводы и другие вспомогательные данные. Содержимое берётся из отдельного файла формата WebVTT (.vtt).Основные атрибуты:
• src — путь к файлу .vtt, содержащему субтитры или метаданные;
• kind — тип дорожки;
• srclang — язык содержимого (например, "ru", "en");
• label — видимое имя дорожки в интерфейсе выбора;
• default — делает дорожку выбранной по умолчанию.
Если у атрибута
kind значение не указано, то тип по умолчанию — subnoscripts (субтитры). Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥12❤9
Привет! Сегодня разберем, как сделать таймер, который отсчитывает время до указанного события (например, до конца распродажи), и по завершении показывает сообщение.
Результат:
На странице будет таймер вроде
00:00:10, который уменьшает время каждую секунду и завершает обратный отсчёт.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤10🤝9👎2
Многие задают абсолютным элементам растяжение вручную:
.block::before {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
content: "";
}Но то же самое можно записать короче — одной строкой:
.block {
position: relative;
}
.block::before {
position: absolute;
inset: 0;
content: "";
}inset: 0 означает сразу: top: 0; right: 0; bottom: 0; left: 0; — элемент растянется по родителю.Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤17🔥13
This media is not supported in your browser
VIEW IN TELEGRAM
Frontend VK Hub — как работают наши интерфейсы?
Что делает интерфейсы VK быстрыми, удобными и устойчивыми под нагрузкой миллионов пользователей?
Frontend VK Hub — это сообщество инженеров, которые создают и развивают пользовательские интерфейсы для ВКонтакте, VK Play, VK WorkSpace и других сервисов экосистемы. Мы делимся практическим опытом, рассказываем о подходах к производительности, внедрении современных фреймворков и всему, что связано с улучшением Developer Experience.
Здесь можно найти инсайты от ведущих фронтенд-разработчиков, разборы реальных задач, новости индустрии и приглашения на мероприятия VK. И конечно, вакансии!
Подписывайся!
Реклама. ООО "ВК" ИНН 7743001840
Что делает интерфейсы VK быстрыми, удобными и устойчивыми под нагрузкой миллионов пользователей?
Frontend VK Hub — это сообщество инженеров, которые создают и развивают пользовательские интерфейсы для ВКонтакте, VK Play, VK WorkSpace и других сервисов экосистемы. Мы делимся практическим опытом, рассказываем о подходах к производительности, внедрении современных фреймворков и всему, что связано с улучшением Developer Experience.
Здесь можно найти инсайты от ведущих фронтенд-разработчиков, разборы реальных задач, новости индустрии и приглашения на мероприятия VK. И конечно, вакансии!
Подписывайся!
Реклама. ООО "ВК" ИНН 7743001840
👎9❤4
В этой шпаргалке собраны методы и свойства для создания, управления и синхронизации анимаций без использования CSS. Здесь отражены инструменты, позволяющие программно запускать, останавливать, реверсировать, ускорять и завершать анимации, а также работать с таймлайнами и событиями завершения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤13👍9🤝1
Фон, реагирующий на звук через Web Audio API
С помощью
Добавим кнопку:
Подключаем микрофон и создаём источник:
Создаём анализатор:
Меняем фон в зависимости от уровня сигнала:
Запускаем:
🔥 Говорите — и фон реагирует в реальном времени. Такой эффект можно использовать в музыкальных визуализациях, интро-анимациях или как интерактивную деталь интерфейса.
📣 Code Ready | #практика
С помощью
Web Audio API можно в реальном времени анализировать входящий аудиопоток с микрофона и использовать полученные данные для динамического изменения фона.Добавим кнопку:
<button id="start">Включить микрофон</button>
Подключаем микрофон и создаём источник:
const btn = document.getElementById("start");
btn.onclick = async () => {
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
const ctx = new AudioContext();
await ctx.resume(); // требуется в некоторых браузерах
const src = ctx.createMediaStreamSource(stream);Создаём анализатор:
const analyser = ctx.createAnalyser();
const data = new Uint8Array(analyser.frequencyBinCount);
src.connect(analyser);
Меняем фон в зависимости от уровня сигнала:
function animate() {
analyser.getByteFrequencyData(data);
const volume = data.reduce((a, b) => a + b, 0) / data.length;
const hue = Math.min(360, volume * 3);
document.body.style.background = `hsl(${hue}, 80%, 50%)`;
requestAnimationFrame(animate);
}Запускаем:
animate();
btn.remove();
};
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥13🤝9
Элемент
<datalist> — это источник предложений, то есть такой элемент, который содержит предопределённые варианты выбора для пользователя. В основном за варианты выбора опций выступают элементы <option>.Элемент
<input> не будут работать с элементом <datalist>, если у <input> одно из следующих значений атрибута type:• hidden;
• password;
• checkbox;
• radio;
• file;
• submit;
• image;
• reset;
• button.
У тега по умолчанию есть роль
listbox.Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍13🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
Code Time — расширение, которое показывает, сколько вы реально пишете код, в какие часы работаете продуктивнее и как меняются ваши рабочие сессии со временем. Это простая статистика активности, которая помогает увидеть свой темп и оптимизировать рабочий день.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥12🤝9❤2👎1
Когда проект растёт, стили начинают перебиваться и путаться. CSS дал решение - каскадные слои.
Создайте слои с приоритетом:
@layer reset, base, components, utilities;
Теперь порядок каскада становится управляемым: слои идут строго в указанной последовательности, а внутри слоя продолжают работать обычные правила (специфичность и порядок объявления).
Например, базовые стили:
@layer base {
button {
font-size: 1rem;
}}Компоненты идут выше по приоритету:
@layer components {
.btn-primary {
font-size: 1.1rem;
}}И утилиты завершают каскад:
@layer utilities {
.fs-lg {
font-size: 1.25rem;
}}Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤10🔥10