Dav*_*vid 20 javascript css icons google-material-icons
当Google的JS无法将其转换为图标时,如何防止显示材料图标文本?
图标在标记中定义如下:
<span class="material-icons">icon_name</span>
Run Code Online (Sandbox Code Playgroud)
示例:https://archive.fo/CKqKG/scr.png(请参阅按钮的顶行).
材料图标文档:https://material.io/icons/
这也是谷歌搜索中的一个问题,谷歌实际上会读取并保存div的文本,而不是忽略它.
示例:https://i.imgur.com/TixS06y.png
我知道一种解决方案是简单地切换到.PNG(由Google提供).我想在用户的系统上做更少(网络)负载的任何结果.
谢谢!
Far*_*uti 12
您可以使用font-display: block;,只需将此 CSS 添加到您的 HTML 头:
<style>
@font-face {
font-family: 'Material Icons';
font-display: block;
}
</style>
Run Code Online (Sandbox Code Playgroud)
有关更多信息font-display
小智 7
在您的“index.html”中,您应该有指向 Google Material Icons 的链接。在此链接中,您必须在末尾包含:“&display=block”。我向您展示结果如何:
<link
rel="stylesheet"
href="https://fonts.googleapis.com/icon?
family=Material+Icons&display=block"
crossorigin
/>
Run Code Online (Sandbox Code Playgroud)
如果您现在访问该链接,您将看到该文档包括:“font-display: block;” (您已更改“显示”)。
就这样。图标的名称不会再出现,并且图标会正确充电!
如果您使用 Typekit 的webfont loader,您可以应用条件类在 web 字体加载或加载失败时隐藏图标,例如:
.wf-loading, .wf-materialicons-n4-inactive {
.material-icons {
display: none;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以根据您的喜好应用其他样式技术以获得最佳结果,例如font-size: 0;,这取决于您的站点和用例。
要使用 webfont 加载器加载材质图标,请使用如下配置:
window.WebFontConfig = {
google: {
families: [
'Material Icons',
],
},
};
Run Code Online (Sandbox Code Playgroud)
我一直在为类似的情况而苦苦挣扎:我的问题不是图标从未加载过,只是它们可能需要一段时间才能在较慢的连接上加载,直到加载了难看的、未格式化的文本(例如情绪非常满意)才会显示在页面上(通常比周围的文字大很多倍,也使它非常明显)。
这里的其他解决方案对我不起作用(包括font-display:block我认为可能有希望的解决方案),所以我想出了自己的使用 CSS 和 jQuery 的解决方案。我相信你可以很容易地调整它以使用 vanilla JS。
CSS:
.material-icons{
opacity:0;
}
Run Code Online (Sandbox Code Playgroud)
jQuery:
$(window).load(function() {
$('.material-icons').css('opacity','1');
});
Run Code Online (Sandbox Code Playgroud)
这里的技巧是,与更常用的$(document).ready()侦听器不同,$(window).load()它在被触发之前等待页面的所有元素下载完毕。在这种情况下,这意味着在下载图标字体之前它不会更改图标的不透明度。
缺点是图标在页面上的所有内容都已下载之前不会显示,但这是我愿意做出的权衡,以避免在加载图标字体之前在我的页面上显示大量文本。
(我还在 CSS 中添加了一个过渡,.material-icons{transition:opacity 0.5s;}所以它们看起来很好很流畅。)