直接的な回答にならないかもしれないのはご了承ください。
まず、以下、公式ではないですが、非常に参考になる記事を紹介します。
WEB高速化うんぬん - Qiita
要素の表示非表示は visibility:hidden の方が display:none よりも高速 - Qiita
display:none でページが軽くなるわけではありません - カスタマイズ
結論
さて、結論ですが、
①と、②では、明らかに差異が生じます。
Webページのライフサイクルには、
パースという、DOM Treeを生成するフェーズが存在するため、
(一つ目の記事参照)
パフォーマンスに影響は間違いなくでるからです。
これは、そのHTMLがどういった構造かを解析するフェーズで、ブラウザがレンダリングを行う際にとても重要なフェーズです。
見えなくとも、構造解析は行うため、その分レンダリングは遅くなります。
また、PageSpeed Insightsでは、
display: none
で隠している要素であっても、ページ全体の要素数を抑えろと、警告してくることからも、隠している要素も、レンダリングパフォーマンスに影響が出ることを、公式が認めていることになります。
(大量の隠し要素であれば、display: hidden
の方がいいのかも。
また、template
要素であれば、その中身はリソースの読み込み自体は行われないため、display
のコントロールより高速となる)
なので、問題は、
②と③で差異が生じるのか、となります。
表示する際は、確かにレンダリングをしない②の方が速いように思いがちですが、
これは本当に実験をしてみないとなんとも言えませんので、
質問者さんが、実験をされてみてはいかがでしょうか?
500行では、影響を測り切れないと思いますが、
一万行とかであれば、表示に差異を持たせられると思います。
ですが、むしろ、②の方が遅くなるかもしれません。
②と③は、パースの時点で差異は生じませんが、
②は、インナースタイルによってレンダリングの前に一つ処理が挟まるため、
表示の切り替えが発生する分、③よりも②の方がパフォーマンスが落ちる可能性が高いと思われます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/27 12:00
2021/02/28 02:07
2021/02/28 02:10
2021/02/28 04:04
2021/02/28 07:05 編集
2021/03/08 09:48