5

私は非常に簡単な jQuery スライドショーを作成しました。これを使用して、自分の番になるまで表示されるべきではない DIV を非表示にしています。

$(document).ready(function() {
  //Hide All Div's Apart From First
  $('div#gall2').hide();
  $('div#gall3').hide();
  $('div#gall4').hide();

しかし、ページをロードすると、DIV の gall2 の gall3 と Gall4 が、非表示になる前に一瞬表示されます。

私のCSSの中に追加するだけでいいでしょうか:

#gall2, #gall3, #gall4{ display:none;}

これは、それらが一瞬だけ表示されるという問題を解決します。それが許容できるかどうかを知りたいだけです

4

5 に答える 5

15

CSS で無効にすることは問題ありませんが、JS を使用していないユーザーには表示されません。

JS のみを使用するユーザーに対して無効にするには、本文と適切な CSS をマークします。

<body>
  <script type="text/javascript">
    document.body.className += " js";
  </script>

CSS:

.js #gall2, .js #gall3, .js #gall4 { display: none; }
于 2009-12-06T17:50:56.927 に答える
2

はい、CSSでそれを行うことは確かに受け入れられます

他の回答者は正しいです。JS だけで見えるようにするのは良い習慣ではありません。私は技術的に考えていたと思います.CSSをこのように変更すると問題が解決します.

于 2009-12-06T17:44:27.543 に答える
2

orip の回答に代わるものとして、にスクリプトを追加したくない場合は、次のことができます<body>

<html>
<head>
  <script src="jquery.js"></script>
  <script>
    $('html').addClass('js');
    $(function() {
      // do DOM ready stuff
    });
  </script>
  <style>
  .js #gall2, .js #gall3, .js #gall4 { display: none; }
  </style>
</head>

DOM の準備が整う前にクラス名を HTML に追加しているため、この方法でちらつきを回避できます。

于 2009-12-06T18:32:21.180 に答える
0

デフォルトではdivが表示されるように設定されている可能性が高いため、それらが表示されています。ページで「準備完了」イベントが発生するまでに数秒かかることがあるため、.hide() メソッド呼び出しは、ページ上のすべてが読み込まれて準備が整うまでヒットしません。

私の記憶が正しければ、.hide() メソッドは要素の「表示」属性を「なし」に設定するだけです。そのため、デフォルトで CSS を使用して div を非表示に設定すると、常に非表示にすることができ、JS がそれらを表示することなく、ユーザーに追加のボーナスを得ることができます。

于 2009-12-06T19:58:35.407 に答える
0

JS をオフにしているユーザーに何が表示されるかを常に想像してみてください。CSS ソリューションを使用すると、最初以外の DIV も表示されませんが、プログラムでスライドを変更すると、明らかに最初の DIV のみが表示されます。「No JS」オプションを提供するのが最善です。次に、ユーザーが JS を有効にしていることを確認できる場合は、CSS を使用して div を非表示にし、JS を使用して表示できます。

于 2009-12-06T17:45:48.900 に答える