menu
menu

キーワード検索

 

12月更新・前月(11月)の人気記事トップ10 - 12/02/2019

  1. ( 1 - ) 【Mac】Macのユーザー名とアカウント名を変更する
  2. ( 5 ↑) 【Mac】Finderにフォルダのフルパスを表示させる方法
  3. ( 2 ↓) 【iPhone・iPad】iPhoneのメモリを簡単に解放する方法
  4. ( 3 ↓) 【CSS】CSSだけでドロップダウンメニュー
  5. (圏外↑) 【iPhone・iPad】投稿の準備中にエラーが起きました。後でやり直してください。
  6. ( 4 ↓) 【Mac】外付けメディアが取り外せなくなったらSpotlightの除外項目を設定してみる
  7. (圏外↑) 【Google】Googleアカウントのメールアドレスを変更する方法
  8. (圏外↑) 【Mac】MacにGoogle Driveをインストール
  9. (圏外↑) 【Suica】iPhoneでSuicaをクレジットカード無しで使う方法
  10. ( 7 ↓) 【jQuery】入門2. jQueryをHTMLに組み込む
このエントリーをはてなブックマークに追加

【JavaScript】noscriptでdisplay:block

【JavaScript】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を指定したい場合は使えると思います。

  • CSS JavaScript
このエントリーをはてなブックマークに追加