Создаём tooltip с копированием в буфер!
Наводим — появляется текст. Кликаем — копируем и показываем «Copied!».
Создаём tooltip-элемент и добавляем в DOM. Находим нужный элемент и создаём подсказку внутри него.
Появление текста и копирование разделены для ясности.
Убираем текст при уходе мыши, очищаем подсказку.
🔥 Работает на любом элементе с data-copy, не требует стилей или библиотек.
📣 Code Ready | #практика
Наводим — появляется текст. Кликаем — копируем и показываем «Copied!».
Создаём tooltip-элемент и добавляем в DOM. Находим нужный элемент и создаём подсказку внутри него.
const el = document.querySelector(".copy-tooltip");
const tooltip = document.createElement("div");
el.appendChild(tooltip);
Появление текста и копирование разделены для ясности.
el.addEventListener("mouseenter", () => {
tooltip.textContent = "Click to copy";
});
el.addEventListener("click", () => {
tooltip.textContent = "Copied!";
navigator.clipboard.writeText(el.dataset.copy);
});
Убираем текст при уходе мыши, очищаем подсказку.
el.addEventListener("mouseleave", () => {
tooltip.textContent = "";
});
🔥 Работает на любом элементе с data-copy, не требует стилей или библиотек.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍13🔥4🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Свойство
scrollbar-gutter
решает проблему с «прыгающей» шириной контента при появлении или скрытии скроллбара.Есть 3 возможных значения:
• auto — дефолтное значение.
• stable — отступ для скроллбара появляется если значение overflow равно hidden, scroll или auto, вне зависимости от того, вызывает контент переполнение или нет.
• stable both-edges — то же самое что и stable, но отступы будут создаваться с двух противоположных сторон.
Контент остаётся на месте, независимо от того, есть скролл или нет. Особенно полезно на десктопах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7❤4🤝2
В этой статье:
• Настройка Laravel и создание REST API для продуктов;
• Создание компонентов Vue.js для отображения и редактирования продуктов;
• Настройка маршрутизации с Vue Router для SPA;
• Интеграция фронтенда и бэкенда в одно приложение с динамическим интерфейсом;
🔊 Подробное руководство на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥8❤7
Шпаргалка по практичным приёмам работы с массивами: фильтрация, сортировка, генерация диапазонов, вложенные структуры и логические проверки. Подойдёт для динамической обработки данных, управления состоянием и генерации UI-списков.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍10🤝9❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Excalidraw — плагин, с которым можно создать чистое полотно, рисовать фигуры, стрелки, писать текст и визуализировать логику приложения без сторонних инструментов.
Идеально, если нужно накидать структуру БД, связи между модулями или продумать архитектуру на лету — прямо в процессе работы.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18👍10🔥6
Привет! В этом гайде создадим модальное окно, которое плавно появляется по нажатию кнопки и затемняется фоном.
Ключевые моменты:
• HTML: минимальная структура с кнопкой, оверлеем и контентом.
• CSS: фиксированная позиция, центрирование и визуальные акценты.
• JS: простое управление классами для открытия и закрытия.
Практичный приём для уведомлений, форм и любого важного контента в UI.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍14❤9🤝9
Селектор
:nth-child()
помогает выбирать элементы по их позиции в родителе: чётные, нечётные, кратные, с шагом и с конца.На картинке — 10 вариантов, которые ускорят работу с вёрсткой.
Сохрани, чтобы не искать в документации каждый раз!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤16🔥8🤝1
Настройка свойств объекта в JavaScript!
С помощью дескрипторов можно задать поведение свойств: сделать их неизменяемыми, скрытыми или защищёнными от удаления. Ниже — три ключевых примера.
Создаём свойство
Добавим свойство
Установим свойство
🔥 Эти приёмы пригодятся при создании API и контроле внутренней логики.
📣 Code Ready | #практика
С помощью дескрипторов можно задать поведение свойств: сделать их неизменяемыми, скрытыми или защищёнными от удаления. Ниже — три ключевых примера.
Создаём свойство
id
, которое нельзя перезаписать:const obj = {}
Object.defineProperty(obj, 'id', {
value: 123,
writable: false,
})
Добавим свойство
hidden
, которое не видно в for...in
и Object.keys()
:Object.defineProperty(obj, 'hidden', {
value: 'secret',
enumerable: false,
})
Установим свойство
flag
с жёсткой защитой от изменений:Object.defineProperty(obj, 'flag', {
value: true,
configurable: false,
})
🔥 Эти приёмы пригодятся при создании API и контроле внутренней логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥11❤8😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Import Cost — показывает, сколько килобайт добавит та или иная библиотека. Особенно полезно новичкам: помогает следить за производительностью, избегать тяжёлых зависимостей.
Можно наглядно понять, где стоит использовать точечный импорт и как не раздуть приложение лишним весом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤8🔥8
This media is not supported in your browser
VIEW IN TELEGRAM
Свойство
overscroll-behavior
позволяет это контролировать — оно отвечает за то, как ведёт себя скролл при достижении краёв вложенных элементов.Как пишется:
• auto — поведение по умолчанию, скролл "переходит" к родителю.
• contain — скролл не выходит за пределы элемента.
• none — блокирует и bounce-эффект, и прокрутку родителя.
• overscroll-behavior-y / -x — управление по осям.
Это свойство часто используют в модалках, слайдерах, выпадающих списках — чтобы скролл оставался там, где должен быть, и не мешал остальной странице.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤9🔥9
В этом посте — современный способ показать пользователю, что контент загружается, ещё до получения данных. Скелетон-лоадер улучшает UX и не требует JavaScript — всё работает на чистом CSS.
Как работает:
• Используем linear-gradient и keyframes для создания эффекта “бегающей” заливки.
• Стили применяются к заглушкам (.skeleton), которые имитируют структуру контента.
• Такой лоадер можно вставить в карточки, списки, таблицы, формы — и это уже продакшн-решение.
Особенно полезно при загрузке API-данных, карточек товаров, постов и аватаров
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25👍12🤝6🔥2😁1