Генератор CSS-загрузчиков
Спиннер сообщает пользователю, что что-то происходит. Этот генератор создаёт один круговой спиннер на CSS: задайте диаметр, толщину рамки, акцентный цвет и скорость вращения, посмотрите живой предпросмотр и скопируйте код. Всё на чистом CSS, без SVG, без JavaScript и без внешних библиотек.
Как пользоваться генератором
-
1
Задайте размер
Диаметр спиннера в пикселях. Диапазон 40-80 px подходит для большинства кнопок и областей контента.
-
2
Задайте толщину рамки
Кольцо, это рамка, нарисованная по кругу. Чем толще рамка, тем заметнее дуга; при диаметре 60 px хорошо смотрится 4-8 px.
-
3
Выберите цвет
Акцентный цвет вращающейся дуги. Остальная часть кольца остаётся светло-серой, чтобы дуга выделялась.
-
4
Задайте скорость и скопируйте CSS
Время одного полного оборота в секундах. Около 1 секунды, обычный оптимум: меньше 500 мс выглядит суетливо, больше 2 секунд вяло.
Как устроен сгенерированный CSS
.loader {
width: 60px;
height: 60px;
border: 6px solid #eee;
border-top-color: #10b981;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
Спиннер, это круг, нарисованный толстой рамкой. Свойство border-top-color окрашивает только верхнюю часть кольца акцентным цветом, поэтому кольцо читается как дуга, а правило @keyframes spin вращает её вокруг центра. Вращение через transform: rotate() остаётся лёгким, потому что браузер двигает элемент на композиторе, а не перерисовывает его кадр за кадром.
Чтобы показать спиннер на странице, добавьте один элемент и подключите CSS:
<div class="loader" role="status" aria-label="Загрузка"></div>
Позаботьтесь о доступности
- Добавьте
role="status", чтобы программы чтения с экрана озвучивали спиннер. - Укажите
aria-labelс текстом состояния, например «Загрузка». - Не прячьте контент за спиннером дольше нескольких секунд без запасного варианта по тайм-ауту.
- Уважайте
prefers-reduced-motion. Тем, кто отключил анимации, вместо вращения покажите простое затухание или статичный текст «Загрузка…»:
@media (prefers-reduced-motion: reduce) {
.loader { animation: none; background: currentColor; opacity: .4; }
}
Когда использовать спиннер, а когда оптимистичный интерфейс
- Ответ быстрее 100 мс: спиннер не нужен; глаз почти не замечает задержку.
- 100 мс – 1 с: ненавязчивый спиннер (маленькое кольцо, текст кнопки «Загрузка…») предотвращает двойные клики.
- 1 с – 10 с: заметный спиннер, в идеале с прогрессом, если его можно измерить.
- > 10 с: это уже не проблема спиннера; выясните, что тормозит, и исправьте.
При отправке форм и нажатиях на кнопки спиннер внутри кнопки обычно лучше, чем оверлей на весь экран.
Часто задаваемые вопросы
CSS подходит для простых спиннеров из одного элемента (приём с вращением четырёх границ). SVG нужен, когда требуется сужающийся хвост, несколько анимаций stroke-dasharray или залитые сегменты, похожие на мазки кистью. CSS меньше и проще, SVG гибче.
Скорее всего, вы вращаете крупный элемент или анимируете некомпозируемое свойство. Держите спиннер небольшим, используйте transform: rotate() (а не top/margin) и не запускайте его, пока идут другие тяжёлые анимации.
Почти всегда по часовой. Вращение против часовой стрелки ощущается едва уловимо неправильным, потому что большинство реальных подсказок о вращении (часы, ветряные мельницы) идут по часовой стрелке. Следуйте этому соглашению, если у вас нет особой причины поступить иначе.
С помощью setTimeout(..., 300) в JavaScript, который добавляет класс загрузчика, и clearTimeout, если операция завершится раньше. Это убирает мерцание при быстрых ответах, не скрывая при этом реальные задержки.
Сопутствующие инструменты
Справочная таблица ASCII
Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.
Справочник сочетаний клавиш
Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.
Справочник символов HTML
Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.
Счетчик FPS
Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.
Генератор цветовой палитры
Создавайте монохромные, аналоговые, комплементарные, триадные или тетрадные палитры из базового HEX-цвета и экспортируйте готовые CSS-переменные.
Генератор случайных букв
Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.