TL;DR: Библиотека react-logo-soup решает проблему несбалансированных логотипов, автоматически нормализуя их пропорции, плотность пикселей и оптическое выравнивание с помощью React компонента и хука.
Введение
Каждый frontend-разработчик сталкивался с задачей отображения логотипов партнеров на сайте. Обычно это набор файлов в разных форматах (SVG, PNG) с разными пропорциями и непонятными отступами. Ручная подгонка размеров занимает много времени, а добавление новых логотипов требует повторной работы. Мы создали библиотеку react-logo-soup, которая автоматически решает эту проблему.
Основная часть
Библиотека react-logo-soup использует три ключевых подхода для нормализации логотипов:
- Пропорциональная нормализация: Учитывает соотношение сторон и масштабный коэффициент.
- Анализ плотности пикселей: Обеспечивает, чтобы плотные логотипы не перевешивали визуально тонкие.
- Оптическое выравнивание: Рассчитывает визуальный центр массы для выравнивания.
Установка
Для начала установите библиотеку через npm:
npm install react-logo-soup
Использование компонента <LogoSoup />
Пример использования компонента:
import React from 'react';
import { LogoSoup } from 'react-logo-soup';
const logos = [
{ src: '/path/to/logo1.svg', alt: 'Logo 1' },
{ src: '/path/to/logo2.png', alt: 'Logo 2' },
// Добавьте другие логотипы
];
function App() {
return (
<div>
<LogoSoup logos={logos} />
</div>
);
}
export default App;
Использование хука useLogoSoup
Если вам нужен более кастомный layout, используйте хук useLogoSoup:
import React from 'react';
import { useLogoSoup } from 'react-logo-soup';
const logos = [
{ src: '/path/to/logo1.svg', alt: 'Logo 1' },
{ src: '/path/to/logo2.png', alt: 'Logo 2' },
// Добавьте другие логотипы
];
function CustomLogoSoup() {
const { normalizedLogos } = useLogoSoup(logos);
return (
<div style={{ display: 'flex', alignItems: 'center', gap: '20px' }}>
{normalizedLogos.map((logo, index) => (
<img key={index} src={logo.src} alt={logo.alt} style={{ width: logo.width, height: logo.height }} />
))}
</div>
);
}
export default CustomLogoSoup;
Практическое применение
Библиотека react-logo-soup особенно полезна в случаях, когда требуется отобразить множество логотипов с разными характеристиками. Например, на странице партнеров или клиентов компании. Она позволяет сэкономить время и обеспечить единообразный вид всех логотипов.
Для более глубокого понимания математических расчетов, лежащих в основе библиотеки, рекомендую ознакомиться с поясняющим блогом.
Также доступен демо-проект в Storybook, где можно увидеть работу библиотеки в действии.
Заключение
Библиотека react-logo-soup предлагает удобное решение для автоматической нормализации логотипов. Она позволяет сосредоточиться на более важных задачах, избавляя от необходимости ручной подгонки размеров и выравнивания. Попробуйте библиотеку в своих проектах и поделитесь обратной связью, особенно по части компенсации плотности и оптического выравнивания.
Исходный код доступен на GitHub.