Как предварительно загрузить svg спрайты? - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть файл svg sprites icons.svg, например:

<?xml version="1.0" encoding="utf-8" ?>
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">

  <symbol id="twitter" viewBox="0 0 512 512">
    <path d="..some path data here..."></path>
  </symbol>

  <symbol id="facebook" viewBox="0 0 512 512">
    <path d="..some path data here..."></path>
  </symbol>
</svg>

, на который я ссылаюсь из тела веб-страницы:

<svg>
    <use xlink:href="/images/common/icons.svg#twitter"></use>
</svg>

Я хотел бы предварительно загрузить icons.svg визбегать мерцанияКак это сделать?

Я пытался добавить ссылку rel preload в head:

<head>
    <link rel="preload" href="/images/common/icons.svg" as="image" type="image/svg+xml"/>
</head>

Но это не работает. Я вижу, что icons.svg загружается два раза в инструментах разработчика Chrome, и появляется следующее предупреждение:

Ресурс http://localhost:57143/images/common/icons.svg был предварительно загружен с использованием предварительной загрузки ссылки, но не использовался в течение нескольких секунд из окнасобытие загрузки. Пожалуйста, убедитесь, что оно имеет соответствующее значение as и преднамеренно предварительно загружено

.

1 Ответ

0 голосов
/ 04 ноября 2019

Возможно, попробуйте использовать prefetch вместо этого, если вы не используете его сразу? он все равно будет загружен.

  <link rel="prefetch" href="/images/common/icons.svg" as="image" type="image/svg+xml"/>

Поскольку он предварительно загружен как изображение, использование тега <img> может подавить это предупреждение. Добавление невидимого изображения с помощью этого SVG где-то должно работать:

  <img src="/images/common/icons.svg" style="display: none">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...