###前提・実現したいこと
JavaScript無効化対策として#JSNG
のHTML要素を作りました。
以下のようにしてJavaScriptの有効判定に用いるつもりです。
jQuery
1// 読み込み終わった場合(=JavaScriptが有効な場合)は削除する 2$(window).on('load',function(){ 3 $('#JSNG').remove(); 4}
この#JSNG
について、「非表示で3秒待ち、1秒かけてふわっと表示し、表示しっぱなし」というアニメーションを実現したいです。
※なぜ3秒待つかというと、JavaScriptが有効のときにも一瞬だけ#JSNG
が表示されてしまうためです。余裕をもって3秒くらいは非表示の状態で、それでも.remove();
されなければ#JSNG
を表示したいと考えました。
###発生している問題
しかし、最後が「表示しっぱなし」でなく「通常CSSのopacity: 0;
」が効いて終わってしまいます。
###該当のソースコード
html
1<body> 2 <div id="JSNG"> 3 <p>JavaScriptが無効です</p> 4 </div> 5</body>
css
1#JSNG { 2 padding: 10px; 3 position: fixed; 4 inset: 0 0 0 0; 5 background: gray; 6 color: white; 7 opacity: 0; 8 animation: JSNG 1s ease 3s 1 normal; 9 -webkit-animation: JSNG 1s ease 3s 1 normal; 10} 11@keyframes JSNG { 12 0% {opacity: 0} 13 100% {opacity: 1} 14} 15@-webkit-keyframes JSNG { 16 0% {opacity: 0} 17 100% {opacity: 1} 18}
###試したこと
最後を「表示しっぱなし」にしたいので、通常CSSを逆にopacity: 1;
にしましたがこれは最初から表示されてしまい、最後にチラつくだけでした。
またanimation
の指定をease
からease-out
にしましたが変化なしでした。(「out」が「最後の状態で止まる」みたいな意味かと思ったんですけど…)
###<noscript>について
上記のCSSよりも正式な方法?なのでしょうか。<noscript>を試しました。
JavaScriptを無効化してアクセスしてFirefox開発ツールで見ますと、
以下のように文字が薄く、非表示のときの状態でした。
画面は真っ白で、アラートも出ません。
有効にしたらアラートは出ます。
なぜ無効にしたときに<noscript>の中身が表示されないのでしょうか。
使用上の注意やよくあるミス、または間違っている部分などございましたら教えて頂けますでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/28 12:28