2013-03-02 17 views
11

Mam obraz tła ze strzałką skierowaną w prawo. Kiedy użytkownik kliknie przycisk, wybrany stan zmienia strzałkę w dół (używając innej pozycji tła w ikonce obrazu).Obracanie obrazu tła za pomocą CSS3

Czy istnieje sposób animacji tego przy użyciu CSS3, więc po kliknięciu przycisku i jQuery przypisuje mu "wybraną" klasy, będzie obracać się w animacji (tylko 90 stopni) od prawej do dolnej? (najlepiej przy użyciu pojedynczego obrazu/pozycji ze strzałką skierowaną w prawo)

Nie jestem pewien, czy należy użyć transformacji czy klatek animacji kluczowych.

+0

zobacz także: [Jak obrócić obraz tła w kontenerze?] (http: // stackoverflow. com/q/5087420/1591669) – unor

Odpowiedz

19

można użyć ::after (lub ::before) pseudo-element, aby wygenerować animację

div /*some irrelevant css */ 
{ 
    background:-webkit-linear-gradient(top,orange,orangered); 
    background:-moz-linear-gradient(top,orange,orangered); 
    float:left;padding:10px 20px;color:white;text-shadow:0 1px black; 
    font-size:20px;font-family:sans-serif;border:1px orangered solid; 
    border-radius:5px;cursor:pointer; 
} 

/* element to animate */ 
div::after    /* you will use for example "a::after" */ 
{ 
    content:' ►';  /* instead of content you could use a bgimage here */ 
    float:right; 
    margin:0 0 0 10px; 
    -moz-transition:0.5s all; 
    -webkit-transition:0.5s all; 
} 

/* actual animation */ 
div:hover::after   /* you will use for example "a.selected::after" */ 
{ 
    -moz-transform:rotate(90deg); 
    -webkit-transform:rotate(90deg); 
} 

HTML :

<div>Test button</div> 

w Twoim przypadku użyje element.selected klasę zamiast

jsfiddle demo: http://jsfiddle.net/p8kkf/

nadzieję, że to pomaga

+0

Czy jest różnica między: po i :: po? – xorinzor

+3

:: po jest bardziej poprawny, ale: po jest lepiej obsługiwany, oba odnoszą się do tego samego –

+0

Super super;) Dzięki człowieku! –

9

Oto obrotowy klasy css że użyłem spin obraz tła:

.rotating { 
    -webkit-animation: rotating-function 1.25s linear infinite; 
    -moz-animation: rotating-function 1.25s linear infinite; 
     -ms-animation: rotating-function 1.25s linear infinite; 
     -o-animation: rotating-function 1.25s linear infinite; 
      animation: rotating-function 1.25s linear infinite; 
} 

@-webkit-keyframes rotating-function { 
    from { 
    -webkit-transform: rotate(0deg); 
    } 
    to { 
    -webkit-transform: rotate(360deg); 
    } 
} 

@-moz-keyframes rotating-function { 
    from { 
    -moz-transform: rotate(0deg); 
    } 
    to { 
    -moz-transform: rotate(360deg); 
    } 
} 

@-ms-keyframes rotating-function { 
    from { 
    -ms-transform: rotate(0deg); 
    } 
    to { 
    -ms-transform: rotate(360deg); 
    } 
} 

@-o-keyframes rotating-function { 
    from { 
    -o-transform: rotate(0deg); 
    } 
    to { 
    -o-transform: rotate(360deg); 
    } 
} 

@keyframes rotating-function { 
    from { 
    transform: rotate(0deg); 
    } 
    to { 
    transform: rotate(360deg); 
    } 
} 
+0

Dzięki za kod. Jeszcze tego nie wypróbowałem, ale czy spowoduje to również obrócenie strzałki od dołu do prawej pozycji, gdy wybrana klasa zostanie usunięta? – Cofey

+0

Będziesz musiał ręcznie ustawić strzałkę po obrocie. Podoba mi się sugestia @ wes'a do użycia pseudo elementu ': ​​after'. – Teddy