私はCSSアニメーションとjQueryを使ってカレンダーに複数のフラップを開きます。これは、ユーザーがアニメーションが終了するのを待ってから次のアニメーションをクリックしている間は素晴らしいものです。しかし、オープニングアニメーションがまだ実行中で、ユーザーが既に次のアニメーションを開始すると、スクリプトが壊れ、.fenster
divおよびwindowレイアウトからクラスopend
が削除されます。jquery(this).parent.hasClassアニメーション中に偽陽性を表示する
誰かが私のスクリプトに問題があるのを見ていませんか?
$(document).on("click" , '.flap' , function(){
if ($(this).parent(".fenster").hasClass("opend")) {
\t $(this).removeClass("flap_open").addClass("flap_close");
\t \t $(this).one('webkitAnimationEnd oanimationend msAnimationEnd animationend', function(e) {
\t \t $(this).next().hide();
\t \t $(this).removeClass("flap_close");
\t \t $(this).parent(".fenster").removeClass("opend");
\t \t });
\t } else {
\t $(this).addClass("flap_open");
\t $(this).parent(".fenster").addClass("opend");
\t //$(this).removeClass("flap_close");
\t $(this).next().show();
\t } \t
});
.fenster {
\t width: 30%;
\t min-width: 130px;
\t max-width: 300px;
\t border: 1px solid rgba(212, 212, 212, 1);
\t position: relative;
left: 200px;
\t z-index: 200;
\t cursor: pointer;
}
.opend {
\t perspective: 1500px;
\t -webkit-perspective: 1500px;
\t box-shadow: inset 0px 0px 5px #2e2d2e;
\t cursor: auto;
\t -webkit-backface-visibility: hidden;
}
.flap {
\t width: 100%;
\t height: 100%;
\t z-index: 100;
background-color: red;
}
.flap:before {
\t content: "";
\t display: block;
\t padding-top: 75%;
}
.flap_open {
\t transform-origin: 0 50%;
\t -webkit-transform-origin: 0 50%;
\t background-size: cover;
\t width: 100%;
\t height: 100%;
\t z-index: 100;
\t cursor: alias;
\t animation: turn 4s forwards;
\t -webkit-animation: turn 4s forwards;
\t box-shadow: 5px 0px 5px 0px #2e2d2e;
}
.flap_close {
\t transform-origin: 0 50%;
\t -webkit-transform-origin: 0 50%;
\t -webkit-animation: zumachen 4s forwards;
\t animation: zumachen 4s forwards;
\t opacity: 0.8;
\t box-shadow: 5px 0px 5px 0px #2e2d2e;
\t transform: rotateY(-100deg);
}
.button{
\t position: absolute;
\t bottom: 2%;
\t left: 15%;
\t width: 70%;
\t height: 5vh;
\t min-width: 80px;
\t min-height: 28px;
\t max-height: 20px;
\t z-index: -1;
\t text-align: center;
\t display: table;
background-color: grey;
}
@keyframes turn {
to {
\t transform: rotateY(-100deg);
\t opacity: 0.8;
\t box-shadow: 5px 0px 5px 0px #2e2d2e;
\t visibility: visible;
}
}
@-webkit-keyframes turn {
to {
\t -webkit-transform: rotateY(-100deg);
\t -webkit-opacity: 0.8;
\t box-shadow: 5px 0px 5px 0px #2e2d2e;
\t visibility: visible;
}
}
@keyframes zumachen {
to {
\t transform: rotateY(0deg);
\t opacity: 1;
\t box-shadow: none;
\t visibility: visible;
}
}
@-webkit-keyframes zumachen {
to {
\t -webkit-transform: rotateY(0deg);
\t -webkit-opacity: 1;
\t box-shadow: none;
\t visibility: visible;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="fenster f7 p3">
<div class="flap"></div>
<div class="button" style="display: none;"><span>Something</span></div>
</div>
<div class="fenster f3 p1">
<div class="flap"></div>
<div class="button" style="display: none;"><span>Something</span></div>
</div>
ともその主要な状態にスタイルをリセットする必要があります。 –