私のウェブサイトにフォントを埋め込むために@ font-faceを使用しています。最初に、テキストがシステムのデフォルトとしてレンダリングされ、フォントファイルがロードされた後、正しいフォントが数秒後にレンダリングされます。この遅延を最小限に抑える/取り除く方法はありますか?Webページをレンダリングする前にフォントが読み込まれるのを待ちます。
答えて
これはブラウザがどのように振る舞うかを示しています。
最初にあなたの@fontが宣言されていますか?それはあなたのHTMLにインラインで、ページ上のCSSシートで宣言されていますか、(うまくいけば)外部のCSSシートで宣言されていますか?
外部のシートにない場合は、それを1枚に移動してみてください(とにかくこれは通常の方が良い方法です)。
これが役立たない場合は、ユーザーエクスペリエンスに重大な悪影響を与える2番目の相違点の割合はご自身である必要がありますか?そうであれば、JavaScriptを検討して、リダイレクト、一時停止などできることがいくつかありますが、実際にはが悪いです。元の問題よりもです。ユーザーにとっては悪く、維持するには悪い
このリンクは役立つかもしれない:
あなたができる最良のことは、Tomの助言に従うことです。さらに、実際のフォントレンダリングブロッカーであるため、クライアントが次のページのロード時にWebサーバーに当たらないようにしてください。実際のフォントリソースとあなたの良いことに1つを借りている。 –
素敵な記事です。 Firefoxがあまり遠く離れたリリースでフォントを読み込むためにSafariのアプローチを採用することを望みましょう。 FOUTはこれまで私にとっては問題ではありませんでしたが、カスタムフォントで作業している現在のサイトでは、システムフォントとは全く異なるため、初めてのフラッシュは非常に目立ちます。 – wheresrhys
大きなフォント(200 Kb)と低速の接続(つまり3G)は1秒未満ではありません。設計者は、SIMチップを備えたタブレットの場合にこのシナリオを検討する必要があります。 – Jaime
たぶん、このような何か:実際のコンテンツとうまくいけば、完全にレンダリングされたフォントと体の内容を交換するときに、ページが読み込まれると、
$("body").html("<img src='ajax-loader.gif' />");
その後、あなたはこのかかわらで遊んでする必要があります...
だけIEの負荷を最初のフォントや、ページの残りの部分を。 他のブラウザは、何らかの理由で同時に物を読み込みます。フォントをホストしているサーバーやフォントのダウンロードに問題があるとします。 フォントが読み込まれるまでサイト全体がハングアップします。私の意見では、スタイルのないテキストのフラッシュは、サイトを全く見ないよりも優れています。
同じWebサイトでフォントをホストしている場合を除いて、まあまあです。 –
また、フォントがブートストラップグリフアイコン以外の場合 –
グリフのピクセルサイズを知る必要がある場合を除いて、 –
Joni Korpiはページの残りの部分より前にフォントを読み込むのに良い記事を持っています。
http://jonikorpi.com/a-smoother-page-load/
彼はまた、ユーザーがイライラしないように遅延を軽減するためにloading.gifを使用しています。
(function() {
document.getElementsByTagName("html")[0].setAttribute("class","wf-loading")
document.getElementsByTagName("html")[0].setAttribute("className","wf-loading")
})();
使用この方法.. Webfont.js
で使用編集:最善のアプローチは、CSSファイルにあなたのフォントをエンコードをbase64におそらくあります。つまり、HTMLが解析されて表示されるまでにフォントを完全に読み込む必要があります。これを行うには、フォントリスのWebFontジェネレータhttps://www.fontsquirrel.com/tools/webfont-generatorを「Expert」をクリックしてから「base64 encode」をクリックします。これがTypeKitのようなサービスの仕組みです。
オリジナルの答え:フォントは彼らの戦略をコピーすることによってFontLoader https://github.com/smnh/FontLoaderかを使用することでしょう読み込まれているかどうかを検出する もう一つの方法。
フォントが読み込まれると、テキストのサイズが変更されるため、ブラウザのscrollイベントにバインドされます。これは2つのdivを含んでおり(高さが変わるとスクロールする)、IEでは別のフォールバックが使用されます。
代わりにsetInterval
を使用してDOMを定期的にチェックすることができますが、javascriptイベントを使う方がはるかに高速で優れています。
明らかに、bodyの不透明度を0に設定し、フォントが読み込まれると一度に表示するようなことがあるかもしれません。
使用https://github.com/typekit/webfontloader
とあなたのする@ font-face内のCSSフォント・ディスプレイを使用することができる構成でイベント https://github.com/typekit/webfontloader#configuration
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js"></script>
<script>
WebFont.load({
custom: {
families: [ 'CustomFont1', 'CustomFont2' ]
},
active: function() {
//render your page
},
});
</script>
をご確認ください。利用可能なすべての値について キーワードは以下のとおりです。
- 自動
- ブロック
- スワップ
- フォールバック
- オプション
あなたは現場でどこで使うべきですか?
ここで読むことができます:https://www.sitepoint.com/css-font-display-future-font-rendering-web/?utm_source=frontendfocus&utm_medium=email
- 1. ReactDOM.renderはレンダリング前にドキュメントが読み込まれるのを待ちますか?
- 2. AppleScript:ページがChromeに読み込まれるのを待ちます
- 3. ページがSeleniumに完全に読み込まれるまで待ちます
- 4. Elixir Houndがページを読み込むのを待ちます
- 5. Python WebDriverがページを読み込むのを待ちます
- 6. Behat +セレン2が読み込まれるのを待ちます
- 7. Mink:@BeforeStepでページが読み込まれるのを待ちます。
- 8. JavaScriptを実行する前にページが読み込まれるのを待つ
- 9. Visual Basic - Webページが読み込まれないのを待つ
- 10. Webクライアントをダウンロードする前に、ページの読み込みを待っ
- 11. スクリーンショットを撮る前にwebviewがHTMLを読み込むのを待ちます。
- 12. Webページが完全に読み込まれてから、Pythonリクエストで掻き集めるまで待ちます。
- 13. jsoupを完了ページ(進行状況ページをスキップする)が読み込まれるまで待ちますか?
- 14. ページの読み込みが完了するまでの待ち時間は?
- 15. 次の機能が起動する前にiframeが読み込まれるのを待ちますか?
- 16. コンポーネントをインスタンス化する前にデータが読み込まれるのを待ちます。
- 17. JavaのURLから内容を読み取る前にページが読み込まれるまで待つ
- 18. 接続しようとする前にGoogleAPIClientが読み込まれるのを待ちます。
- 19. ページが読み込まれるのを待つ
- 20. Selenium/Firefoxでページが読み込まれるのを待つ
- 21. ページが読み込まれるのを待つ -
- 22. iMacros:JavaScriptポストリンクのページが読み込まれるまで待つ
- 23. セレン3を使用してページが完全に読み込まれるまで待ちますか?
- 24. Angular 2&Vanilla JS:httpコールを行う前に画像が読み込まれるまで待ちます
- 25. コンポーネントビューをレンダリングする前に非同期データが読み込まれるのを待つ
- 26. データがAngular2に読み込まれる前のページを表示
- 27. selenium-webdriverとページが読み込まれるまで待つ
- 28. ページが完全に読み込まれる前にボタンをクリック
- 29. フォントの読み込み中にページがフリーズする
- 30. iOS用ChromeにGoogle Webフォントが読み込まれない
キャッシングフォントが有効です。 – Krii
これは、ワイヤレスリンク上のユーザーがWebフォントを読み込むのに時間がかかるため、Webサイトを実際に遅くするための良い方法です。テキストが数秒で表示されない場合、多くのユーザーは戻るボタンを押すだけです。 – erjiang