9月更新・前月(8月)の人気記事トップ10 09/02/2024
- ( 01 – ) 【Labs】position:absoluteとwidth:100%を指定すると横幅の設定がうまくいかない場合の対処方法について
- ( 07 ↑) 【Mac】macOSをHigh SierraからMontereyにアップグレード
- ( 03 – ) 【Mac】横画面で撮影した動画をYouTubeショート用にMacのiMovieで縦画面に編集する方法
- ( 10 ↑) 【iPhone / iPad】iPhoneのツイッターアプリでユーザー名をコピーする方法
- (圏外↑) 【Labs】CSSだけでドロップダウンメニュー
- ( 02 ↓) 【jQuery】入門2. jQueryをHTMLに組み込む
- ( 09 ↑) 【Mac】Safariでソースコードを見る方法
- ( 04 ↓) 【jQuery】入門7. jQueryで新しいWindowを開く
- ( 06 ↓) 【2024年5月】iPad画面解像度まとめ
- (圏外↑) 【GIMP】レイヤーをロック
【Labs】noscriptでdisplay:block
こんにちは(・∀・)
ある要素にCSSのdisplay:noneをJavaScript内で指定して、それを同じくJavaScriptでdisplay:blockにする、というようなスクリプトを組むことはよくあると思います。
読み込みのタイミング
display:noneやopacity:0などをJavaScript内で完結できるのであれば良いのです。
しかし、JavaScriptではよくあるDOM構築時に非表示にしたい要素が一瞬表示されてしまうという現象があります。
その要素が画面の下の方にあって最初に見えない状態であれば問題ないのですが、ファーストビューで見えてしまうとやはりどうしてもCSSの方でdisplay:noneを指定したくなる、と思うことはよくあります。
ただし、ご存知の通りCSSで要素にdisplay:noneを指定すると、JavaScriptを無効にしている場合、何も表示されなくなるという状態になってしまいます。
それでは困るのです。
で、そこでnoscriptです。
通常のCSSではdisplay:noneを指定していても、noscriptの方でdisplay:blockを指定しておけば、JavaScriptを無効にしている場合でもちゃんと表示してくれるようになります。
<style>.hoge { display: none; }</style>
<noscript><style>.hoge { display: block; }</style></noscript>
また、HTML5からはnoscriptをhead内に読み込むことができるようになり、head内にnoscriptを配置した場合は、noscriptにlink要素を読み込ませることができるようになりました。
noscriptで別のCSSを読み込ませて、そのCSSでdisplay:blockを指定しておくという方法でも良いかもしれません。
<noscript><link rel="stylesheet" href="hoge.css"></noscript>
ちょっと一手間ですが、どうしてもCSSにdisplay:noneを指定したい場合は使えると思います。