SVG 异步加载
使用 JavaScript 加载 SVG 图标提供了一种非阻塞机制,可以在页面上显示图标。如果您想要对图标显示方式进行更细粒度的控制,可以使用 CSS 和我们的加载事件。
虽然异步图标加载允许页面更快地渲染,但它也可能导致页面布局发生偏移。
您可以通过利用 JavaScript 引擎执行的加载操作期间添加到 <html> 标签的一些类来避免图标加载和布局或文本偏移。
<html> <head></head> <body> <i class="fas fa-user"></i> My User
<script defer src="/static/fontawesome/fontawesome-all.js"></script> </body></html>当浏览器开始搜索图标时,<html> 标签将包含 fontawesome-i2svg-pending。(i2svg 是我们将“i 标签转换为 SVG”的缩写)
<html class="fontawesome-i2svg-pending"> ...</html>在图标替换完成后,待处理类将被替换为 fontawesome-i2svg-complete,并且还会添加 fontawesome-i2svg-active 类。
<html class="fontawesome-i2svg-active fontawesome-i2svg-complete"> ...</html>在第一次成功加载图标后,fontawesome-i2svg-active 类将保留。但是,如果加载了另一批图标,complete 将再次切换到 pending。
<html class="fontawesome-i2svg-active fontawesome-i2svg-pending"> ...</html>同样,在图标替换发生后,我们将回到我们的 complete 事件。
<html class="fontawesome-i2svg-active fontawesome-i2svg-complete"> ...</html>这使我们能够使用 CSS 做一些有趣的事情。例如,我们可以隐藏 <body>,直到图标加载完成。
body { display: none;}
.fontawesome-i2svg-active body { display: initial;}或者只在图标替换后显示某些部分。
<main> <div>Main section that always shows</div>
<div class="wait-for-icons"> <i class="fas fa-camera"></i> I like cameras </div></main>.wait-for-icons { display: none;}
.fontawesome-i2svg-active .wait-for-icons { display: initial;}