2017-02-06 10 views
0

サイトのインデックスページには、背景としてヒーローイメージ(#hero)を含む100vh divと、#introcontainer div内にあるテキストがあります。ハッシュ変更を使用してdivを表示/非表示します。ページがリロードされた場合、またはダイレクトリンクが使用されている場合、どのようにCSSの遷移を無効にすることができますか?

hashchanges経由で他のページにアクセスすると、#heroが高さ85pxになり、#introcontainerが非表示になるように設定しました。すべてがスイッチ機能を使用してコンテンツの表示/非表示を行っています。

問題は、私がリフレッシュしたり、ハッシュでURLに直接行くと、ヒーローイメージが簡単に表示され、圧縮されたサイズまで200msのトランジションになります。私は可能ならばそれを防ぐつもりです。

<script> 
    function nav() { 
    switch (window.location.hash) { 
       case "#work": 
         document.getElementById("workblock").style.cssText = 'display: block;' 
         document.getElementById("workblock").className = "" 
         document.getElementById("aboutblock").style.cssText = 'display: none;' 
         document.getElementById("recentblock").style.cssText = 'display: none;' 
         document.getElementById("hero").style.cssText = 'height: 85px; transition: 200ms ease-in-out; cursor: auto;' 
         document.getElementById("introcontainer").style.cssText = 'visibility: hidden; opacity: 0; transition: visibility 200ms, opacity 200ms linear;'; 

         break; 

       case "#about": 
         document.getElementById("aboutblock").className = "" 
         document.getElementById("aboutblock").style.cssText = 'display: block;' 
         document.getElementById("recentblock").style.cssText = 'display: none;' 
         document.getElementById("workblock").className = "offscreen" 
         document.getElementById("hero").style.cssText = 'height: 85px; transition: 200ms ease-in-out; cursor: auto;' 
         document.getElementById("introcontainer").style.cssText = 'visibility: hidden; opacity: 0; transition: visibility 200ms, opacity 200ms linear;'; 
         break; 


       default: 
         document.getElementById("recentblock").style.cssText = 'display: block;' 
         document.getElementById("aboutblock").className = "offscreen" 
         document.getElementById("workblock").className = "offscreen" 
         document.getElementById("hero").style.cssText = 'height: 100vh; cursor: auto;' 
         document.getElementById("introcontainer").style.cssText = 'visibility: visible; opacity: 1; transition: visibility 200ms, opacity 200ms linear;'; 

     } 
    } 

    $(document).ready(function() { 
     nav(); 

    $(window).bind('hashchange', function(){ 
     nav(); 
     }); 
    }); //doc ready 
</script> 

答えて

0

あなたはreadyコールバックでtransition CSSスタイルルールを設定すべきではありません。

<script> 
 
function nav(isHashChange) { 
 
    switch (window.location.hash) { 
 
     case "#work": 
 
      document.getElementById("workblock").style.cssText = 'display: block;' 
 
      document.getElementById("workblock").className = "" 
 
      document.getElementById("aboutblock").style.cssText = 'display: none;' 
 
      document.getElementById("recentblock").style.cssText = 'display: none;' 
 
      document.getElementById("hero").style.cssText = 'height: 85px; transition: 200ms ease-in-out; cursor: auto;' 
 

 
      document.getElementById("introcontainer").style.cssText = isHashChange 
 
       ? 'visibility: hidden; opacity: 0; transition: visibility 200ms, opacity 200ms linear;' 
 
       : 'visibility: hidden; opacity: 0;'; 
 

 
      break; 
 

 
     case "#about": 
 
      document.getElementById("aboutblock").className = "" 
 
      document.getElementById("aboutblock").style.cssText = 'display: block;' 
 
      document.getElementById("recentblock").style.cssText = 'display: none;' 
 
      document.getElementById("workblock").className = "offscreen" 
 
      document.getElementById("hero").style.cssText = 'height: 85px; transition: 200ms ease-in-out; cursor: auto;' 
 
      document.getElementById("introcontainer").style.cssText = isHashChange 
 
       ? 'visibility: hidden; opacity: 0; transition: visibility 200ms, opacity 200ms linear;' 
 
       : 'visibility: hidden; opacity: 0;'; 
 
      break; 
 

 

 
     default: 
 
      document.getElementById("recentblock").style.cssText = 'display: block;' 
 
      document.getElementById("aboutblock").className = "offscreen" 
 
      document.getElementById("workblock").className = "offscreen" 
 
      document.getElementById("hero").style.cssText = 'height: 100vh; cursor: auto;' 
 
      document.getElementById("introcontainer").style.cssText = isHashChange 
 
       ? 'visibility: visible; opacity: 1; transition: visibility 200ms, opacity 200ms linear;' 
 
       : 'visibility: visible; opacity: 1;'; 
 

 
     } 
 
} 
 

 
$(document).ready(function() { 
 
    nav(false); 
 

 
    $(window).bind('hashchange', function(){ 
 
     nav(true); 
 
    }); 
 
}); //doc ready 
 
</script>

+0

ああ:

はこれを試してみてください。それは理にかなっている。それはどこに行かなければならない?表示/非表示のdivのクリック機能ですか? – AdamDallas

+0

コメントにコードを入れる方法が見つかりませんでした。 – yibuyisheng

+0

これは素晴らしいです!ありがとう。 最初は機能しませんでした。スイッチとは別のクリックイベントとして独自の機能を作っても機能しませんでした。それで私は思い出しました。 '* { -webkit-transition:すべて200msのやすさ; -moz-transition:すべて200msの容易さ。 -o-transition:すべて200msの容易さ。 移行:すべて200msの容易さ。 }「 私のCSS!もう一度やってはいけない。 – AdamDallas

関連する問題