2013-07-07 11 views
14

Ich habe ein Element, das ich möchte Fade mit CSS3. Es kann von zwei Klassen mit opacity: 0 und opacity: 1 einfach getan werden, aber Problem Element verblasst ist einig Drop-down-Menü und es hat Elemente unter es, so dass selbst wenn es hat Opazität: 0, seine noch anklickbare und Elemente unter ist es nicht. Wenn ich das display: none; Attribut hinzufüge, ist das Element nicht animiert.CSS3 Übergang Fadein mit Display: keine

Ist es möglich mit css nur zu vermeiden?

ich this geprüft habe, aber didnt finden Lösung arbeiten

http://jsfiddle.net/Eh7jr/

+0

Könnten Sie bitte eine Demo zur Verfügung stellen? –

+0

Wenn Sie es deaktivieren möchten, möchten Sie wahrscheinlich auch jquery verwenden. Wenn dies der Fall ist, können Sie den Stil für den Hover schreiben und auch das Dropdown-Menü deaktivieren. –

+0

http://jsfiddle.net/Eh7jr/ – pie6k

Antwort

10

Statt display:none, versuchen Sie es mit visibility: hidden;

FIDDLE

this article Siehe in dem es heißt:

Sichtbarkeit beseelt trotz der CSS Basic Box Modell spec sagen „Anima: no“

+2

Sichtbarkeit weiterhin blockiert. –

+0

funktioniert gut für Tooltips in Kombination mit @ Bens Antwort 'pointer-events: none;' das verhindert Hover- und Klick-Events auf dem Ziel –

1

Sie können ein Element machen keine Klicks mit diesem akzeptieren:

.hidden 
{ 
    pointer-events:none; 
} 
+0

http://jsfiddle.net/Eh7jr/1/ yep, es funktioniert. Wie wäre es mit Browserunterstützung? – pie6k

+1

Browser-Unterstützung ist ausgezeichnet, außer natürlich für IE. http://caniuse.com/#feat=pointer-events – Ben

+0

gut, dann kann ich nicht akzeptieren, Website ist unbrauchbar, wenn Sie auf Dropdown-Menü Position klicken auf 'Register' innerhalb der Kopfzeile durch Dropdown-Deckkraft abgedeckt: 0. – pie6k

0

versuchen, ein Element zu machen, die nicht akzeptieren Klicken Sie, indem Sie den Z-Index auf einen negativen Wert anwenden.

a{z-index: -999;} 

Oh! Ich habe dein Problem verstanden. Sie können visibility: collapse; besser als versteckt, denke ich.

+0

http://jsfiddle.net/Eh7jr/2/ Es ist nicht glatt – pie6k

+0

negativen Z-Index auf a setzen. http://jsfiddle.net/Eh7jr/4/ –

1

Bemerken das Beispiel in dem JS Fiddle oben gebrochen wurde, den Code hier festgelegt:

8

Sie es um 100% CSS tun können reinen Code:

<style> 
div { 
    position: absolute; 
    transition: all 2s; 
} 
div.opa { 
    opacity: 0; 
    visibility:hidden; 
} 
</style> 
<div class=opa>dsdsds</div> 
<br> <br> 
<p><a href="#">clickme</a></p> 
<script> 
$('a').click(function(){ 
    $('div').toggleClass('opa');  
}) 
</script> 

die fiddle behoben.

.menu > li > ul{ 
    display: none; 
} 
.menu > li:hover > ul { 
    display: block; 
    animation-duration: 0.5s; 
    animation-name: fadeInFromNone; 
    animation-fill-mode: forwards; 
    -webkit-animation-duration: 0.5s; 
    -webkit-animation-name: fadeInFromNone; 
    -webkit-animation-fill-mode: forwards; 
    -ms-animation-duration: 0.5s; 
    -ms-animation-name: fadeInFromNoneIE; 
    -ms-animation-fill-mode: forwards; 
} 
@-webkit-keyframes fadeInFromNone { 
    0% { 
     opacity: 0 
    } 

    1% { 
     opacity: 0 
    } 

    100% { 
     opacity: 1 
    } 
} 

@keyframes fadeInFromNoneIE { 
    0% { 
     opacity: 0 
    } 

    1% { 
     opacity: 0 
    } 

    100% { 
     opacity: 1 
    } 
} 

@keyframes fadeInFromNone { 
    0% { 
     opacity: 0 
    } 

    1% { 
     opacity: 0 
    } 

    100% { 
     opacity: 1 
    } 
} 
+0

Mit 'display: none' wenn Element nicht': hover' wird ** fadeOut ** machen Instant (überhaupt keine Animation). Trotzdem konnte ich bis heute keine bessere Lösung finden. – maszynka

Verwandte Themen