2013-03-02 71 views
11

Tôi có hình nền có mũi tên trỏ sang phải. Khi người dùng nhấp vào nút, trạng thái đã chọn sẽ thay đổi mũi tên để chỉ xuống (sử dụng vị trí nền khác trong hình ảnh của tôi).Xoay hình nền bằng CSS3

Có cách nào để tạo hiệu ứng này bằng CSS3 vì vậy khi nút được nhấp và jQuery gán cho nó lớp "đã chọn", nó sẽ xoay trong hoạt ảnh (chỉ 90 độ) từ phải xuống dưới? (tốt nhất là sử dụng hình ảnh/vị trí đơn có mũi tên trỏ sang bên phải)

Tôi không chắc chắn liệu có nên sử dụng khung hình hoạt ảnh hoặc biến đổi hay không.

+0

Xem thêm: [Làm thế nào để xoay hình ảnh nền trong container?] (http: // stackoverflow. com/q/5087420/1591669) – unor

Trả lời

19

bạn có thể sử dụng ::after (hoặc ::before) pseudo-element, để tạo ra các hình ảnh động

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> 

trong trường hợp của bạn sẽ sử dụng lớp element.selected thay vì

jsfiddle bản demo: http://jsfiddle.net/p8kkf/

hy vọng điều này giúp

+0

có sự khác biệt nào giữa: after và :: after? – xorinzor

+3

:: sau là chính xác hơn, nhưng: sau khi được hỗ trợ tốt hơn, cả hai tham khảo cùng một điều –

+0

Siêu tuyệt vời;) Cảm ơn người đàn ông! –

9

Đây là một lớp css xoay mà tôi đã sử dụng để quay hình nền:

.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

Cảm ơn bạn đã nhập mã. Tôi đã không thử nó ra được nêu ra, nhưng điều này cũng sẽ xoay mũi tên từ xuống đến vị trí bên phải khi lớp được chọn được loại bỏ? – Cofey

+0

Bạn sẽ phải định vị mũi tên theo cách thủ công sau khi xoay. Tôi thích gợi ý của @ wes để sử dụng phần tử giả ': after'. – Teddy

Các vấn đề liên quan