Генератор CSS-спрайтів
Безкоштовний генератор CSS-спрайтів: об’єднайте до 500 зображень в один PNG з класами background-position або атласом JSON, без завантаження на сервер.
Зображення
- Розмір аркуша
- Використаний простір
Як створити спрайт-аркуш
- Перетягніть зображення в зону завантаження або натисніть на неї, щоб вибрати файли. Приймаються PNG, SVG, WebP, JPG та інші формати, які може прочитати ваш браузер, до 500 зображень. Кожен файл з’являється в списку Зображення з його розміром; кнопка × видаляє одне зображення, а Видалити всі зображення очищає список.
- Виберіть Розкладку: Сітка, Щільна (найменший аркуш), Горизонтальна смуга або Вертикальна смуга. У режимі Сітка поле Стовпці (0 = автоматично) задає кількість стовпців.
- Задайте Відступ (px) між спрайтами (за замовчуванням 2) і позначте Розмір – степінь двійки (256, 512, 1024…), якщо цього потребує ваш рушій чи відеокарта.
- Виберіть Файл даних: CSS (класи background-position), JSON (карта кадрів) або CSS і JSON. За потреби змініть Ім’я файлу та Префікс CSS-класів (за замовчуванням в обох випадках «sprite»).
- Перевірте перегляд, Розмір аркуша та Використаний простір, потім натисніть Завантажити ZIP (PNG + дані) або Завантажити лише PNG. Згенерований код також можна скопіювати безпосередньо.
Зображення декодуються у вашому браузері, і нічого не завантажується на сервер. SVG без власних width і height растеризується так, що його довша сторона дорівнює 256 px.
Вибір розкладки
- Сітка дає кожному зображенню клітинку розміром із найбільше зображення. За автоматичної кількості стовпців сітка приблизно квадратна. Вона проста й передбачувана та ідеально підходить, коли всі спрайти однакового розміру, як-от набір тайлів.
- Щільна (найменший аркуш) використовує полицеве пакування: зображення сортуються від найвищого й розміщуються зліва направо рядами. Інструмент пробує багато ширин аркуша й залишає ту, що дає найменшу площу, враховуючи округлення до степеня двійки, якщо цей параметр увімкнено. Найкраща для іконок різних розмірів.
- Горизонтальна смуга і Вертикальна смуга розміщують зображення в один рядок чи стовпець у порядку, в якому ви їх додали. Саме цього очікують багато програвачів анімації для кадрів.
Аркуш не може перевищувати 16 384 px з кожного боку чи близько 16,7 мегапікселя – це межа, яку можуть намалювати браузери.
Використання CSS
CSS містить базовий клас, що задає аркуш як background-image з no-repeat, а потім по одному класу на кожен спрайт, названому за його файлом: home.png стає sprite-home. Імена переводяться в нижній регістр, діакритика прибирається, інші символи перетворюються на дефіси, а дублікати отримують -2, -3.
<link rel="stylesheet" href="sprite.css">
<span class="sprite sprite-home"></span>
<span class="sprite sprite-search"></span>
Кожен клас спрайта задає width, height і background-position із від’ємними зсувами. Спрайт у позиції x = 40, y = 20 отримує background-position: -40px -20px: весь аркуш зсувається всередині елемента на 40 px ліворуч і на 20 px угору, тож крізь рамку елемента видно лише цей спрайт. Відступ не дає сусіднім спрайтам просочуватися, коли сторінку масштабують або текстуру фільтрують.
Екрани з високою щільністю пікселів: малюйте зображення вдвічі більшими за розмір показу, згенеруйте аркуш, потім додайте до базового класу background-size зі значенням, що дорівнює половині розміру аркуша, і поділіть навпіл ширини, висоти та зсуви. Інструмент цього не генерує; це ручне доопрацювання.
Чи потрібні спрайти за HTTP/2?
Спрайти придумали, щоб заощаджувати HTTP-запити. За мультиплексування в HTTP/2 багато малих файлів завантажуються майже так само швидко, як один, тому виграш для вебсайтів значно менший, а SVG-іконки чи шрифти з іконками для масштабованих значків часто кращі. Спрайт-аркуші залишаються стандартом для 2D-ігор і кадрів анімації: одна текстура – менше перемикань текстур на відеокарті та один файл для завантаження.
Поширені запитання
Чи завантажуються мої зображення на сервер?
Ні. Усе декодується, пакується й кодується у вашому браузері. Зображення ніколи не залишають ваш пристрій.
Які ігрові рушії можуть читати цей JSON?
JSON використовує формат «JSON hash» програми TexturePacker: об’єкт frames із ключами за іменами файлів, у кожному з яких є frame (x, y, w, h), rotated: false, trimmed: false і sourceSize, а також meta.image і meta.size. Phaser, PixiJS та багато інших рушіїв завантажують його напряму.
Чи зберігається прозорість?
Так. Аркуш – це PNG, тож прозорі пікселі залишаються прозорими. Шахівниця в перегляді показується лише там, де аркуш порожній.
Навіщо потрібні розміри, що є степенем двійки?
Старіші відеокарти та WebGL 1 потребують текстур зі степенем двійки для mipmap-ів і режимів повторення, і деякі рушії досі цього очікують. Параметр округлює аркуш угору, наприклад 300 × 70 px стає 512 × 128 px.
Чи обрізаються або повертаються спрайти?
Ні. Кожне зображення розміщується як є, разом із прозорими полями, і ніколи не повертається, тож позиції точно відповідають вашим вихідним файлам.
Схожі інструменти
- Розділення зображення на сітку Розділіть зображення на сітку фрагментів для Instagram, панорами чи постера для друку: з попереднім переглядом розрізів і пронумерованими файлами.
- Створення GIF із зображень і відео Створіть анімований GIF із зображень або короткого відео: порядок кадрів, затримки, повторення, палітра й дизеринг. Усе у вашому браузері.
- Створення колажу з фото Створіть колаж з 2–9 фото: сітки й мозаїки, відступи, заокруглені кути, формати для Instagram. Працює у вашому браузері, фото не йдуть на сервер.
- Генератор favicon Створіть favicon з картинки, літери чи емодзі: favicon.ico, apple-touch-icon, PNG для Android і site.webmanifest в одному ZIP. Усе у вашому браузері.