2017-03-20 3 views
0

jQueryを一時停止するためにたくさんのことを試みたが、CSSアニメーションを待つが、 。隠す()。助けてください!CSSで要素をスライドさせてjQueryで非表示にしたいが、hideはアニメーションを無視するようだ。

$('#button').on("click", function() { 
     $("#main-content").toggleClass("hide-main-content").hide(); 
     $("#csp-content").removeClass("hide-csp-content"); 
    }); 

CSS::(私はそれが中)(.hide前蹴りを仕上げています確認したいので、私はスーパーが4.5Sをexagerated使用しています。)

.hide-main-content, .hide-csp-content { 
    right: -100vw !Important; 
    -webkit-transition: all 4.5s ease-in-out; 
    -moz-transition: all 4.5s ease-in-out; 
    -ms-transition: all 4.5s ease-in-out; 
    -o-transition: all 4.5s ease-in-out; 
    transition: all 4.5s ease-in-out; 
} 
#main-content, #csp-content { 
    background: #FFFFFF; 
    position: relative; 
    z-index: 10; 
    -webkit-font-smoothing: antialiased; 
    -moz-osx-font-smoothing: grayscale; 
    top: 0; 
    right: -40vw; 
    width: 60vw; 
    -webkit-transition: all 0.5s ease-in-out; 
    -moz-transition: all 0.5s ease-in-out; 
    -ms-transition: all 0.5s ease-in-out; 
    -o-transition: all 0.5s ease-in-out; 
    transition: all 0.5s ease-in-out; 
} 

は、ここに私の現在のコードです

HTML:

<section id="main-content" class="hide-main-content"> 
<p>MAIN</p> 
</section> 

<section id="csp-content" class="hide-csp-content"> 
<p>CSP</p> 
</section> 
+0

使いのブラウザではJavaScriptがトグルされるクラス。表示/非表示にする2つの異なるCSSクラスを切り替えるつもりですか?もしそうなら、スライド* *コンテンツクラスのCSSはどこにありますか? – clav

+0

clav、私はいくつかのエラーを作った投稿のために私のページを簡素化しようとして、申し訳ありません私は今、CSSを更新しました。 – Player

+0

jQuery [animate](http://api.jquery.com/animate/)の仕事のように聞こえますが、ここで渡す_complete_関数で 'removeClass'を実行します。 –

答えて

0

これを試してみてください:

$('#button').on("click", function() { 
     $("#main-content").toggleClass("slide-main-content"); 
     setTimeout(function() { 
      $("#main-content").hide(); 
      $("#csp-content").removeClass("slide-csp-content"); 
     }, 4500); 
    }); 

OPの編集:最後に、これは解決されてしまった、それをあなたのsetTimeout(機能)のおかげで見つかりました:

$('#button').on("click", function() { 
    $("#main-content").toggleClass("hide-main-content"); 
     setTimeout(function(){ 
      $("#main-content").hide(); 
     }, 500); 
    $("#csp-content").toggleClass("hide-csp-content"); 
     setTimeout(function(){ 
      $("#csp-content").show(); 
     }, 500); 
}); 
+0

試していただきありがとうございますが、何も起こらない4500の遅れの直後にはまだ瞬時に.hide()です。 – Player

0
$("#main-content").toggleClass("slide-main-content"); 
$("#main-content").one("transitionend", function() { 
    $("#main-content").hide(); 
}, false); 

ますそれを突き止める前にトランジションの終了を検出する必要があります。上記の例では、 "transitionend"の要素に1つのイベントリスナーを追加し、発生時に非表示にします。このコードは、あなたの.hide()行を置き換えます。

+0

Brandon、答えていただきありがとうございますがコードが実行されません。コンソールエラーが発生します: SyntaxError:期待される式 'got'、 ' .oneの中に二重関数()があるとしますか? – Player

+0

@Playerもう一度試してみて、私はタイプミスがありました! –

+0

何らかの理由でコードがトップクリック機能を起動するボタンを壊しています。 $( 'a#open-case-study')。( "click"、function(){' } $("#main-content ").toggleClass(" slide-main-content "); ' ' $( "#メインコンテンツ").one( "transitionend"、function(){' ' $( "メインコンテンツ").hide(); ' '}、false); ' '$("#csp-content ").removeClass(" hide-csp-content ");' '})' – Player

0

おそらく、その種の魔法?

以下のコードは、2つの要素の表示を切り替えます。既定では#main-contentが表示され、#csp-contentは表示されません。

ボタンがクリックされたとき、私たちはグローバルクラス.hide-main-contentを切り替える - アウトスライドと隠れ#main-contentになりbodyに(それは要素自体もよい)、(それがどんなスペースを使用していない)と、同時に#csp-contentがun-隠れ​​ているとのスライド

それはあなたのために動作しない場合は、希望行動説明してください - 。を達成にあなたが何をしようとしているの?

$('#button').on("click", function(){ 
 
    $('body').toggleClass("hide-main-content"); 
 
});
body { 
 
    overflow-x: hidden; 
 
} 
 

 
#main-content, 
 
#csp-content { 
 
    background: pink; 
 
    text-align: center; 
 
    width: 60vw; 
 
    
 
    overflow: hidden; 
 
    position: relative; 
 
    top: 0; 
 
    
 
    transition: all 1.5s ease-in-out; 
 
} 
 

 
#main-content, 
 
.hide-main-content #csp-content { 
 
    right: -40vw; 
 
    visibility: visible; 
 
    max-height: 10000px; 
 
} 
 

 
#csp-content, 
 
.hide-main-content #main-content { 
 
    right: -100vw; 
 
    visibility: hidden; 
 
    max-height: 0; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<section id="main-content"> 
 
    <p>MAIN</p> 
 
</section> 
 

 
<section id="csp-content"> 
 
    <p>CSP</p> 
 
</section> 
 

 
<button id="button" type="button">Toggle content</button>

+0

Wiktor、要件があります。ポジションで表示:相対;あなたの設定ではうまくいかないようです。他の選択肢はありますか? – Player

+0

@Player、予想される動作が正確に何であるか説明できますか?あなたのコードから、あなたは '#main-content'を隠して、ボタンをクリックしたときに'#csp-content'を表示したいと思っていましたが、おそらく私は間違っていると思いましたか?とにかくコードを変更したので、エレメントは本当に隠れて相対的な配置を使用します。試してみてください。 –

+0

こんにちは、ありがとう。最後に、私はsetTimeout(関数)を使って必要なものを達成しました。コードは次のようになります: '$("#main-content ")。toggleClass(" hide-main-content "); setTimeout(function(){$ ( "#csp-content"); toggleClass( "hide-csp-content"); setTimeout(function(){$( " #csp-content ")。show();}、500);' これはきれいではないかもしれませんが、それは仕事を完了します。 – Player

0

transitionendイベントリスナーを要素を選択し、クラスを切り替えます。スライド・メイン・コンテンツとスライド-CSP-コンテンツが、HTMLとCSSリファレンス非表示メイン・コンテンツと非表示-CSP-コンテンツと呼ばれる

$('#button').on("click", function() { 
 
    $("#main-content").on('transitionend', function() { 
 
    $(this).hide(); 
 
    }).toggleClass("slide-main-content"); 
 
    $("#csp-content").removeClass("slide-csp-content"); 
 
});
.slide-main-content { 
 
    transition: transform 1s; 
 
    transform: translateX(25%); 
 
} 
 
.slide-csp-content { 
 
    color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<section id="main-content" class="hide-main-content"> 
 
<p>MAIN</p> 
 
</section> 
 

 
<section id="csp-content" class="slide-csp-content hide-csp-content"> 
 
<p>CSP</p> 
 
</section> 
 

 
<button id="button">button</button>

関連する問題