Я боролся с подобной ситуацией: моя проблема заключалась не в том, что значки никогда не загружались, а в том, что им могло потребоваться время для загрузки при более медленных соединениях и до тех пор, пока они не загрузили уродливый неформатированный текст, например sentiment_very_satisfied будет отображаться на странице (часто во много раз больше, чем окружающий текст, что также делает его очень очевидным).
Другие решения здесь не помогли мне (включая font-display:block
, которые, как я думал, могут быть многообещающими), поэтому я придумал свое, используя CSS и jQuery. Я уверен, что вы могли бы легко адаптировать его для использования ванильного JS.
CSS:
.material-icons{
opacity:0;
}
jQuery:
$(window).load(function() {
$('.material-icons').css('opacity','1');
});
Уловка здесь в том, что, в отличие от более часто используемого прослушивателя $(document).ready()
, $(window).load()
ожидает загрузки всех элементов страницы перед запуском. В данном случае это означает, что прозрачность значков не изменится, пока шрифт значка не будет загружен.
Обратной стороной является то, что значки не будут отображаться до тех пор, пока все на странице не будет загружено, но это был компромисс, на который я был готов пойти, чтобы на моей странице не отображались огромные фрагменты текста. до загрузки шрифта значка.
(Я также добавил переход к CSS .material-icons{transition:opacity 0.5s;}
, чтобы они выглядели красиво и плавно.)
person
todd
schedule
30.01.2019