CSS3 za pomocą pakietu Webkit w Safari; Mam przycisk, który po kliknięciu powoduje, że element div znika. Ten element div jest po prostu dużym wypełnionym prostokątem i zawiera kilka przycisków, z których jeden ma tę samą różnicę, aby zaniknąć.Element CSS3 z kryciem: 0 (niewidoczny) reaguje na zdarzenia myszy
Problem polega na tym, że po wygaśnięciu elementu (krycie: 0) i kliknięciu tam, gdzie był jeden z przycisków, onClick nadal jest uruchamiany. W innych słowach, mimo że przycisku nie można zobaczyć (krycie: 0), nadal istnieje i jest częścią modelu zdarzenia. Nie chcę tego.
Przyciski zadzwonić pod następujące funkcje:
// 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";
}
Klasa CSS dla nakładki jest taka:
.popupContainer {
opacity: 0;
-webkit-transform: scale(0.7);
-webkit-transition-duration: 0.3s;
-webkit-transition-timing-function: ease-in-out;
-webkit-transition-delay: initial;
}
Jeśli nie używam ustawienia widoczności lub wyświetlania w ogóle animacja jest w porządku, ale zdarzenia mouseClick są wyzwalane dla niewidocznych elementów.
Jeśli korzystam z bloków, to włącza się/wyłącza bez animacji.
Jeśli używam stylu wyświetlania, to jest to rodzaj pracy, ale zamiast natychmiastowego wyświetlania animacji, wyzwala się tylko po wywołaniu jakiegoś innego zdarzenia na stronie, tak jak w innym przycisku na stronie.
Pomyślałem, że może dodać "pointer-events: none" do stylu używanego przez pop-up div po jego ukryciu, ale to, o co pytam, wydaje się być czymś, co często napotykasz z nieprzezroczystością, więc musi być wpół-częsty problem.
Myśli?
Prawda. Powinieneś pomyśleć o nieprzezroczystości: element 0 tak, jakby był wykonany ze szkła :) –
Wyświetlacz: brak // wyświetlacz: blok działa, aby rozwiązać problem za pomocą kliknięcia myszą, ale potem krycie nie jest animowane od 1 do 0. Div po prostu włącza się i wyłącza. To był problem z wyświetlaczem: atrybut. Próbowałem ustawić wyświetlacz: brak przed i po ustawieniu nieprzezroczystości: 0, ale wierzę (?), Że wyniki funkcji są stosowane en-mass po wywołaniu funkcji, co daje wynik netto zniknięcia bloku zamiast zanikać. Czy jest coś jeszcze, co muszę zrobić, aby ustawić blok po zakończeniu animacji krycia? – Woodster
@Woodster Mogę polecić zajrzeć do korzystania z jQuery na coś takiego. Wbudowane efekty animacji (takie jak 'fadeOut') są łatwe w użyciu. 'fadeOut' wycisza cokolwiek, a następnie ustawia go na' display: none' out of the box. –