2015-06-08 13 views
6

Mamy trochę okien, aby pokazać trochę danych po najechaniu myszą. Kiedy przesuniemy kursor myszy nad jeden element, powinien się rozwinąć, przed innymi elementami i pokazać ukryte dane.CSS: Zapobieganie wpływowi elementu na element do końca przejścia

zrobiłem coś takiego:

box:hover { 
    z-index: 50; 
} 

Ale jest jeden problem; Kiedy przesuniemy mysz na inną zewnętrzną białą przestrzeń, z-index powraca do wartości, tak jak inne. Widać więc, że ukryty element znajduje się w niższej warstwie niż następny.

Jak zapobiec przeniesieniu właściwości, do końca okresu przejściowego?

Oto mój numer jsFiddle. Postaraj się najechać na jeden element, usunąć mysz z elementu, a obraz tła innych elementów znajdzie się przed naszym zawieszonym elementem przed zakończeniem przejścia.

Aktualizacja: jest to zrzut ekranu przedstawiający problem. To jest, gdy odradzamy element. background-image innych elementów pojawia się przed naszym zawieszonym elementem.

Our problem! Check the jsFiddle link above

+0

może być artefaktem mojej przeglądarce (Safari Mac), ale nie dostać opisać problem. Jednak w Chrome otrzymuję czerwone tło, więc podejrzewam, że CSS może być nieporęczny. –

+0

@MAGNAWS Dodano zrzut ekranu, aby lepiej opisać sytuację. – mrReiha

+0

To nie dzieje się w moich przeglądarkach (Safari, Chrome lub Firefox na Macu). Jednak Safari wyświetla tło głównego okna jako białe. Podejrzewam, że CSS jest zepsuty. Przez "zepsuty" niekoniecznie mam na myśli "zło". Może znajdować się w nieokreślonym obszarze; gdzie różne przeglądarki reagują inaczej. To, co zwykle robię w tych przypadkach, to próba przekształcenia w najprostszą możliwą formę; czasami rezygnując z jakiegoś wyobrażenia w tym procesie (jest to dobry efekt, BTW). –

Odpowiedz

2

dodać przejście również z-index, lecz wstawić tylko wtedy, gdy opóźnienie .box jest w stanie normalnym.

Robi więc z-index zmieni istantly przy aktywowaniu, natomiast po przeciwnej działania („unhover”) z-index zajmie jego wartość początkową, ale dopiero po 0.5 sekund (czas trwania efektu rozszerzającego jest 0.4 sekund)

.box { 
    ... 
    z-index: 1; 
    -webkit-transition: z-index 0s .5s; 
     -moz-transition: z-index 0s .5s; 
      transition: z-index 0s .5s; 
} 

.box:hover { 
    -webkit-transition: z-index 0s 0s; 
     -moz-transition: z-index 0s 0s; 
      transition: z-index 0s 0s; 
    z-index: 50; 
} 

przykład: http://jsfiddle.net/yjg2oach/

+0

Twoje edytowane skrzypce (drugie) działają idealnie w chrome, ale na firefox, to się nie udaje :( – mrReiha

+0

@mrReiha to dlatego, że w .box nie ma początkowej wartości z-index (i w zależności od wersji firefox może być również konieczny prefiks '-moz-') – fcalderan

+0

Wow , Brzmi niewiarygodnie Nie wiedziałem, że 'z-index' jest animowalny.Dzięki bardzo, – mrReiha

1

Dodaj atrybut przejścia do grupy .box.

.box { 
    float: left; 
    position: relative; 
    width: 100px; 
    height: 100px; 
    margin: 10px; 
    margin-bottom: 35px; 
     transition: .4s; 
} 

Stałe fiddle

+0

Działa idealnie na chrome, ale na firefoxie nadal ma problem :( – mrReiha

Powiązane problemy