2011-10-18 27 views
24

Có thể tạo hoạt ảnh cho các lớp giả CSS không?Tạo hiệu ứng thuộc tính chuyển tiếp CSS trong: sau /: trước các lớp giả

Nói rằng tôi có:

#foo:after { 
    content: ''; 
    width: 200px; 
    height: 200px; 
    background: red; 
    display: block; 
    -webkit-transition: all 1s ease-in-out; 
    -moz-transition: all 1s ease-in-out; 
    -o-transition: all 1s ease-in-out; 
} 

#foo:hover:after { 
    width: 250px; 
    height: 250px; 
} 

Đây có phải là thậm chí có thể? Tôi đã được thử nghiệm và cho đến nay tôi dường như không thể tìm thấy một giải pháp. Tôi đang cố gắng cắt giảm số lượng hỗ trợ JavaScript tôi cần bằng cách sử dụng Modernizr.

Tôi đã có phương pháp JavaScript, vì vậy vui lòng không có lựa chọn thay thế JavaScript nào.

Demo: http://jsfiddle.net/MxTvw/

+0

Câu hỏi hay. Bạn đang sử dụng phần tử ':: after' để làm gì? – Ryan

+0

@minitech Không thực sự quan trọng những gì tôi đang sử dụng nó cho, bối cảnh của điều đó không thay đổi cho dù nó sẽ làm việc hay không. Tôi đã có một thay thế JS của tiêm divs vv nhưng tôi con số, nếu tôi không cần phải sử dụng JS, tại sao sử dụng nó. Do đó, tuyệt vời Modernizr;) – daryl

+0

Không, tôi có nghĩa là "nó dường như sẽ không hoạt động, vì vậy có lẽ có một thay thế CSS3 tốt hơn mà bạn không biết về" :) – Ryan

Trả lời

11

Fiddle của bạn không hoạt động với tôi trong Firefox. Và theo như tôi biết, và nếu this article được cập nhật thì đây là trình duyệt duy nhất có thể làm động các phần tử giả.


EDIT: Tính đến năm 2016, các liên kết đến bài viết bị hỏng và relevant WebKit bugfixed4 năm trước. Đọc để xem các câu trả lời khác, câu trả lời này đã lỗi thời.

+0

Đừng cho rằng bạn biết cách để modernizr phát hiện xem nó có thể hoạt ảnh không? – daryl

+0

Nếu tôi hiểu chính xác cách modernizr hoạt động, nó kiểm tra các thuộc tính trong đối tượng kiểu phần tử. Để làm điều này với các phần tử giả, bạn sẽ cần một cách để giữ đối tượng kiểu của phần tử giả, và tôi không làm được điều đó. Nhưng tôi có thể (và muốn trở thành) sai. Nếu có ai đó hãy sửa tôi. – Litek

+1

Lỗi WebKit này đã được sửa vào ngày hôm qua: http://trac.webkit.org/changeset/138632 –

0

does not seem to work bây giờ, tuy nhiên theo W3 specs bạn có thể áp dụng hiệu ứng chuyển tiếp để pseudo-yếu tố. Có thể một thời gian trong tương lai…

11

Google Chrome bổ sung sửa chữa webkit lỗi cho Version 27.0.1453.110 m

lỗi WebKit này đã được cố định: http://trac.webkit.org/changeset/138632

Có thể animate giả :before:after, đây là một vài ví dụ về hoạt ảnh của các yếu tố psuedo :before:after.

Đây là một sửa đổi của các ví dụ của bạn ở trên với một số chỉnh sửa, mà làm cho nó sinh động trong và ngoài trơn tru hơn mà không có sự mô phỏng mouseleave/mouseout chậm trễ trên di chuột:

http://jsfiddle.net/MxTvw/234/

Cố gắng thêm bộ chọn chính #foo với phân lớp :hover giả trong quy tắc lớp học thứ hai :hover thứ hai của bạn. Ngoài ra thêm các transition bất động sản, và không chỉ là nhà cung cấp cụ thể tính tiền tố cho transition:

#foo:after{ 
    display: block; 
    content: ''; 
    width: 200px; 
    height: 200px; 
    background: red; 
    -webkit-transition: all .4s ease-in-out; 
    -moz-transition: all .4s ease-in-out; 
    -o-transition: all .4s ease-in-out; 
    transition: all .4s ease-in-out; 
} 

#foo, 
#foo:hover:after, 
#foo:hover:before{ 
    width: 250px; 
    height: 250px; 
} 

Lưu ý rằng đi về phía trước bất kỳ yếu tố Pseudo như :before:after nên sử dụng cú pháp ruột đôi ::before::after.Ví dụ này mô phỏng một phai trong và ngoài sử dụng một lớp phủ background-colorbackground-image trên di chuột:

http://jsfiddle.net/MxTvw/233/

Ví dụ này mô phỏng một Animate quay trên di chuột:

http://jsfiddle.net/Jm54S/28/

Dĩ nhiên tiến lên phía trước với tiêu chuẩn css3, chúng tôi có thể sử dụng ::before::after.

này hoạt động trong mới nhất Firefox, Chrome, Safari, Opera 18+, IE10, IE11 (IE9 và dưới đây không hỗ trợ chuyển css3 hoặc động.)

+0

Các lớp giả không phải là các phần tử giả. Toàn bộ điểm giới thiệu cú pháp hai dấu hai chấm đó để mọi người không bị lẫn lộn. Oh và điều này đã được đề xuất nhiều lần, và tất cả đều không hoạt động trong WebKit. – BoltClock

+0

các câu hỏi trên hỏi về 'animate' giả: trước và sau khi .. css3 chuyển tiếp là lỗi trong phiên bản mới nhất WebKit .. css3 hoạt hình và biến đổi animate tốt .. [https://bugs.webkit.org/show_bug.cgi ? id = 23209] –

+0

liên kết được sửa lỗi: https://bugs.webkit.org/show_bug.cgi?id=23209 và http://trac.webkit.org/changeset/88308 bản vá hiển thị này đã được áp dụng nhưng không làm việc đúng .. cũng một số work-arounds tìm thấy ở đây trên bình luận 51 - http://code.google.com/p/chromium/issues/detail?id=54699 –

-2

Tôi chỉ phát hiện ra rằng bạn có thể làm động: sau khi và: trước (:

Mã example-

.model-item { 
    position: relative; 

    &:after { 
     content: ''; 
     position: absolute; 
     width: 100%; 
     height: 100%; 
     top: 0; 
     right: 0; 
     background: transparent; 
     transition: all .3s; 
    } 
    } 

    .opc { 
    &:after { 
     content: ''; 
     position: absolute; 
     width: 100%; 
     height: 100%; 
     top: 0; 
     right: 0; 
     background: rgba(0, 51, 92, .75); 
    } 
    } 

tôi có div .model mục và tôi cần thiết để động của mình:. sau Vì vậy, tôi đã thêm một lớp làm thay đổi nền và tôi đã thêm mã chuyển tiếp vào chính: sau (trước khi hoạt ảnh)

+0

Làm việc với Chrome cũng vậy –

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