Próbuję uzyskać efekt „zanikania, zanikania”, używając przejścia CSS. Ale nie mogę zmusić tego do pracy z obrazem tła ...
CSS:
.title a {
display: block;
width: 340px;
height: 338px;
color: black;
background: transparent;
/* TRANSITION */
-webkit-transition: background 1s;
-moz-transition: background 1s;
-o-transition: background 1s;
transition: background 1s;
}
.title a:hover {
background: transparent;
background: url(https://lh3.googleusercontent.com/-p1nr1fkWKUo/T0zUp5CLO3I/AAAAAAAAAWg/jDiQ0cUBuKA/s800/red-pattern.png) repeat;
/* TRANSITION */
-webkit-transition: background 1s;
-moz-transition: background 1s;
-o-transition: background 1s;
transition: background 1s;
}
Spójrz: http://jsfiddle.net/AK3La/
css
background
background-image
css-transitions
Nick Zani
źródło
źródło
background-image
nie jest animowaną właściwością ( w3.org/TR/css3-transitions/#animatable-properties ), więc Twoje rozwiązanie nie jest zgodne ze standardami.background
i to jest to, czego należy użyć (w moim przypadku działa w Chrome). Może specyfikacja (lub impl) uległa zmianie od czasu wysłania pytaniaRozwiązaniem (które znalazłem sam) jest sztuczka ninja, mogę ci zaoferować dwa sposoby:
najpierw musisz utworzyć „kontener” dla
<img>
, będzie on zawierał jednocześnie stany normalne i po najechaniu :z selektorami CSS3 http://jsfiddle.net/eD2zL/1/ (jeśli użyjesz tego, „normalny” stan będzie pierwszym dzieckiem kontenera lub zmień
nth-child()
kolejność)Rozwiązanie CSS2 http://jsfiddle.net/eD2zL/2/ (różnice między nimi to tylko kilka selektorów)
Zasadniczo musisz ukryć „normalny” stan i pokazać jego „najechanie” po najechaniu kursorem
i to wszystko, mam nadzieję, że ktoś uzna to za przydatne.
źródło
Znalazłem rozwiązanie, które zadziałało dla mnie ...
Jeśli masz element listy (lub element div) zawierający tylko link i powiedzmy, że dotyczy to linków społecznościowych na Twojej stronie do Facebooka, Twittera itp. i używasz obrazka sprite'a, możesz to zrobić:
Ustaw tło „li” jako obraz przycisku
Następnie ustaw obraz tła linku jako stan po najechaniu na przycisk. Dodaj również atrybut krycia do tego i ustaw go na 0.
Teraz wszystko, czego potrzebujesz, to „krycie” pod „a: hover” i ustaw na 1.
Dodaj atrybuty przejścia krycia dla każdej przeglądarki do „a” i „a: hover”, aby ostateczny plik CSS wyglądał mniej więcej tak:
Jeśli poprawnie wyjaśniłem, że powinno to pozwolić na zanikający przycisk obrazu tła, mam nadzieję, że przynajmniej pomoże!
źródło
Niestety nie możesz użyć przejścia
background-image
, zobacz listę animowanych właściwości w3c .Możesz zrobić kilka sztuczek z
background-position
.źródło
Możesz użyć pseudoelementu, aby uzyskać pożądany efekt, tak jak to zrobiłem w tym Fiddle .
CSS:
HTML:
źródło
:after
elementu, spróbuj ustawićwidth
iheight
jak100%
zamiastinherit
, 2) jeżelibackground-image
jest faktycznie wyświetlane w planie , indeks użycie negatywne dla:after
elementu:z-index: -1;
Jeśli możesz używać jQuery, możesz wypróbować wtyczkę BgSwitcher, aby przełączyć obraz tła z efektami, jest bardzo łatwy w użyciu.
Na przykład :
Dodaj własny efekt, zobacz dodawanie typów efektów
źródło
Spróbuj tego, sprawi, że animacja tła będzie działać w sieci, ale hybrydowa aplikacja mobilna nie będzie działać
źródło
Biorąc pod uwagę, że obrazy tła nie mogą być animowane, stworzyłem małą mieszankę SCSS pozwalającą na przejście między 2 różnymi obrazami tła za pomocą pseudoselektorów przed i po . Znajdują się na różnych warstwach indeksu Z. Ten, który jest przed nami, zaczyna się od krycia 0 i staje się widoczny po najechaniu kursorem.
Możesz użyć tego samego podejścia do tworzenia animacji z liniowymi gradientami.
scss
Teraz możesz go po prostu używać z
Możesz to sprawdzić tutaj: https://jsfiddle.net/pablosgpacheco/01rmg0qL/
źródło
Jeśli animowanie
opacity
nie wchodzi w grę, możesz także animowaćbackground-size
.Na przykład użyłem tego CSS, aby ustawić
backgound-image
z opóźnieniem.źródło
.after
do.before
dla obrazu tła, musisz ustawić obraz tła na.before
. W przeciwnym razie po prostu zniknie bez animacji.Salam, ta odpowiedź działa tylko w Chrome, ponieważ IE i FF obsługują przejście kolorów.
Nie ma potrzeby tworzenia elementów HTML
opacity:0
, ponieważ czasami zawierają one tekst i nie ma potrzeby podwajania elementów !.Pytanie z linkiem do przykładu w jsfiddle wymagało niewielkiej zmiany, to znaczy wstawienia pustego obrazu w
.title a
takibackground:url(link to an empty image);
sam sposób, w jaki go umieściłeś,.title a:hover
ale uczyń go pustym obrazem, a kod będzie działał.Sprawdź to https://jsfiddle.net/Tobasi/vv8q9hum/
źródło
Z inspirującym postem Chrisa tutaj:
https://css-tricks.com/different-transitions-for-hover-on-hover-off/
Udało mi się to wymyślić:
źródło
Można to osiągnąć dzięki większej obsłudze różnych przeglądarek niż akceptowana odpowiedź, używając pseudoelementów, czego przykładem jest ta odpowiedź: https://stackoverflow.com/a/19818268/2602816
źródło
Przez chwilę się z tym zmagałem, najpierw użyłem stosu obrazów jeden na drugim i co trzy sekundy próbowałem animować do następnego obrazu w stosie i wrzucać bieżący obraz na spód stosu. W tym samym czasie korzystałem z animacji pokazanych powyżej. Nie mogłem zmusić go do pracy dla mojego życia.
Możesz użyć tej biblioteki, która pozwala na ** dynamicznie zmieniany rozmiar obrazu tła z możliwością pokazu slajdów ** przy użyciu jquery-backstretch.
https://github.com/jquery-backstretch/jquery-backstretch
źródło