CSS3はSafariでWebkitを使用しています。クリックするとdivがフェードインされるボタンがあります。そのdivはちょうど大きな塗りつぶしの矩形で、その中にはいくつかのボタンがあり、その1つでは同じdivがフェードアウトします。不透明度を持つCSS3要素:0(不可視)はマウスイベントに応答します
問題は次のとおりです。要素がフェードアウト(不透明度:0)し、ボタンの1つがクリックされたときにonClickがまだ起動されています。言い換えれば、ボタンが見えなくても(不透明度:0)、それはまだそこにあり、イベントモデルの一部です。私はそれを望んでいない。
ボタンには、次の関数を呼び出す:
// This displays the overlay (popup)
function showCategoryPopup() {
// Was playing with the following, but with no success.
// popupCategory.style.display = "block";
// popupCategory.style.visibility = "visible";
// Change the attributes that will be animated.
popupCategory.style.opacity = 1;
popupCategory.style.webkitTransform = "scale(1.0)";
}
function hideCategoryPopup() {
// Change the animated attributes
popupCategory.style.opacity = 0;
popupCategory.style.webkitTransform = "scale(0.7)";
// Even if opacity is 0, we still get mouse events. So, make it hidden?
// popupCategory.style.visibility = "hidden";
// popupCategory.style.display = "none";
}
オーバーレイのためのCSSクラスはこれです:私は、視認性や表示の設定を使用しない場合
.popupContainer {
opacity: 0;
-webkit-transform: scale(0.7);
-webkit-transition-duration: 0.3s;
-webkit-transition-timing-function: ease-in-out;
-webkit-transition-delay: initial;
}
アニメーションは問題ありませんが、不可視アイテムのmouseClickイベントがトリガーされます。
ブロックを使用すると、アニメーションなしでオン/オフが切り替わります。
表示スタイルを使用すると、アニメーションがすぐに表示される代わりに、アニメーションがすぐに表示されます。ページ内の他のボタンと同じように、ページ内の他のイベントがトリガーされると発生します。
私は、ポップアップdivで使用されているスタイルに "pointer-events:none"を追加したかもしれないと思っていましたが、私が求めていることは、半期的な問題でなければなりません。
思考?
真。不透明度:0要素がガラスであるかのように考えてください:) –
display:none // display:ブロックはマウスのクリックで問題を解決するように動作しますが、不透明度は1から0にアニメーション化されません。 divはちょうどオンとオフをポップします。これはdisplay:属性の問題でした。私は表示を設定しようとしました:不透明度:0を設定する前後にnoneを設定しようとしましたが、関数の結果が関数が呼び出された後に適用され、ブロックのネット結果がフェードアウト。不透明アニメーションが終了した後にブロックを設定するために何か他に必要なことはありますか? – Woodster
@Woodster jQueryをこのようなものに使うことをお勧めします。組み込みのアニメーション効果( 'fadeOut'など)は使いやすいです。 'fadeOut'は何があっても消えてしまい、それを' display:none'に設定します。 –