2010-12-10 18 views
210

Próbuję zrobić efekt przejścia w tle podczas zawieszania pozycji menu, ale to nie działa. Oto mój kod CSS:Przejście koloru tła

#content #nav a:hover { 
    color: black; 
    background-color: #AD310B; 
    /* Firefox */ 
    -moz-transition: all 1s ease-in; 
    /* WebKit */ 
    -webkit-transition: all 1s ease-in; 
    /* Opera */ 
    -o-transition: all 1s ease-in; 
    /* Standard */ 
    transition: all 1s ease-in; 
} 

#nav div jest menu lista ul przedmiotów.

+0

Po prostu FYI działa teraz w przeglądarce Firefox. Testowane w FF9. –

Odpowiedz

436

Z tego co wiem, przejścia działają obecnie w Safari, Chrome, Firefox, Opera i Internet Explorer 10+.

Powinno to wywołać efekt zanikania dla ciebie w tych przeglądarkach:

a { 
 
    background-color: #FF0; 
 
} 
 

 
a:hover { 
 
    background-color: #AD310B; 
 
    -webkit-transition: background-color 1000ms linear; 
 
    -ms-transition: background-color 1000ms linear; 
 
    transition: background-color 1000ms linear; 
 
}
<a>Navigation Link</a>

Uwaga: Jak podkreślił Gerald w komentarzach, jeśli umieścić przejście na a , zamiast na a:hover, przywróci oryginalny kolor, gdy mysz zostanie odsunięta od łącza.

To może się przydać także: CSS Fundamentals: CSS 3 Transitions

+31

Możesz również wstawić przejścia do 'content #nav a', aby przywrócić do pierwotnego wyglądu, gdy użytkownik odsunie mysz od łącza. –

+2

Fiddle z ** hover ** i ** click ** przejściami w: [jsfiddle.net/K5Qyx](http://jsfiddle.net/K5Qyx/) –

+3

Czy nie byłoby lepiej umieścić 'przejście:' do bezuwania? Myślę, że za każdym razem, gdy użytkownik się unosi, przejście jest kompilowane. –

46

Dla mnie, to lepiej umieścić kody przejścia z oryginalnymi/minimum selektorów niż z: hover lub jakichkolwiek innych dodatkowych selektorów:

#content #nav a { 
 
    background-color: #FF0; 
 
    
 
    -webkit-transition: background-color 1000ms linear; 
 
    -moz-transition: background-color 1000ms linear; 
 
    -o-transition: background-color 1000ms linear; 
 
    -ms-transition: background-color 1000ms linear; 
 
    transition: background-color 1000ms linear; 
 
} 
 

 
#content #nav a:hover { 
 
    background-color: #AD310B; 
 
}
<div id="content"> 
 
    <div id="nav"> 
 
     <a href="#link1">Link 1</a> 
 
    </div> 
 
</div>

+6

Nie chodzi o to, że jest lepiej czy gorzej. Chodzi o to, że jeśli określisz przejście w samym lementie, zostanie ono animowane, gdy element zostanie uniesiony i gdy zostanie "un-hovered". Jeśli zastosujesz ją do: hover, będziesz mieć animację po wejściu myszy, ale nie po jej opuszczeniu. – LucasBeef

+5

To rozwiązanie jest ogólnie lepsze. Efekt przejścia powinien i powinien się pojawiać po najechaniu i zanikać rozmycia. – Chizzle