webフォントを設定すると、一瞬デフォルトのフォントが表示されてしまう時があります。そんなwebフォントのちらつきをCSSのみでなくす方法をご紹介します。
目次
CSS
html {
visibility: hidden;
}
html.wf-active {
visibility: visible;
}
visibility: hidden;でまずは非表示にします。
visibilityは、文書のレイアウトを変更することなく要素を表示したり非表示にしたりします。
(レイアウトから除去する場合はdisplay:noneを使用する)
webフォントは読み込まれると、htmlタグに「wf-active」のクラスが付与されるので、「wf-active」が付与されたら、visibility: visible;で表示させるというやり方です。
低速環境だと、読み込みに時間がかかってしまい、真っ白な画面のまま、なかなか表示されない場合もあります。
低速環境を考慮する場合はjsを追加します。
js
setTimeout(function () {
document.getElementsByTagName("html")[0].classList.add("loading-delay");
}, 3000);
css
html {
visibility: hidden;
}
html.wf-active, html.loading-delay {
visibility: visible;
}
読み込み3秒後に「loading-delay」のクラスを付与する。
CSSにて、「loading-delay」を表示させる。
この方法で3秒後に「wf-active」ではなく、「loading-delay」側でサイトが表示されます。