Я знаю, как загружать значки SVG на моем сайте, но я не могу понять, как удовлетворить все следующие ограничения:
- Возможность использования значков SVG в CSS
- Отсутствие пропущенных значков (FOMI)
- Минимальный размер начальной страницы
- Кэшированные SVG
- Возможность использования CDN
- Должна иметь возможность использовать
fill: currentColor
, чтобы значок соответствовал текущему цвету текста, точно так же, как иконы-шрифты - Бонус: Пиксель-выравнивание SVG, чтобы они всегда выглядели острыми.
1,2,3 и 4 можно выполнить, используя внешнее отображение спрайтов, например:
<svg viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:href="/assets/sprite-4faa5ef477.svg#icon-asterisk-50af6"></use>
</svg>
Но мы не можем использовать CDN, пока браузеры не зафиксируют проблему CORS.
Мы можем заплатить в поддержку внешних доменов, но я уверен, что это не сработает для CSS, потому что он только наблюдает за DOM (извините, еще не протестировано), а также заставляет ваш браузер делать целую кучу неудачных запросов к файлу, который он не может получить (по одному для каждого значка на странице).
Мы можем использовать CDN, если вместо этого мы либо встраиваем весь SVG (увеличенный размер страницы, ни кеширование), либо мы используем AJAX (вызывает FOMI).
Итак, существуют ли какие-либо решения, удовлетворяющие всем ограничениям 5 7?
В принципе, я хочу, чтобы SVG были так же удобны, как иконы-шрифты, или нет переключения точек. SVG поддерживают несколько цветов и являются более доступными, но я не могу заставить их выглядеть так же хорошо или загружать как можно эффективнее.