2013-07-07 39 views
14

Tôi có một số phần tử tôi muốn fade với CSS3. Nó có thể được chỉ đơn giản là thực hiện bởi 2 lớp với opacity: 0opacity: 1, nhưng vấn đề là nhạt dần yếu tố là một số trình đơn thả xuống và nó có yếu tố dưới nó, vì vậy ngay cả khi nó có opacity: 0, nó vẫn 'có thể nhấp' và các yếu tố dưới thì không.Chuyển tiếp CSS3 fadein có màn hình: none

Nếu tôi thêm thuộc tính display: none;, phần tử là không hoạt ảnh.

Có thể với css chỉ để tránh không?

Tôi đã kiểm tra this nhưng didnt tìm giải pháp làm việc

http://jsfiddle.net/Eh7jr/

+0

Bạn có thể vui lòng cung cấp bản trình diễn không? –

+0

Nếu bạn muốn vô hiệu hóa nó thì có thể bạn cũng muốn sử dụng jquery. Nếu vậy, bạn có thể dễ dàng viết kiểu cho di chuột cũng như vô hiệu hóa trình đơn thả xuống. –

+0

http://jsfiddle.net/Eh7jr/ – pie6k

Trả lời

10

Thay vì display:none, hãy thử sử dụng visibility: hidden;

FIDDLE

Xem this article trong đó nêu:

tầm nhìn sinh động bất chấp sự CSS cơ bản Hộp mẫu đặc tả nói “Animatable: không có”

+2

khả năng hiển thị vẫn chặn. –

+0

hoạt động tốt cho chú giải công cụ kết hợp với câu trả lời của @ Ben 'pointer-events: none;' ngăn các sự kiện di chuột và nhấp chuột vào mục tiêu –

1

Bạn có thể làm cho một phần tử không chấp nhận nhấp chuột với điều này:

.hidden 
{ 
    pointer-events:none; 
} 
+0

http://jsfiddle.net/Eh7jr/1/ yep, nó hoạt động. hỗ trợ trình duyệt như thế nào? – pie6k

+1

Hỗ trợ trình duyệt tuyệt vời, ngoại trừ khóa học dành cho IE. http://caniuse.com/#feat=pointer-events – Ben

+0

sau đó tôi không thể chấp nhận nó, trang web là không thể sử dụng khi bạn sẽ đi đến vị trí menu thả xuống nhấp vào 'đăng ký' bên trong tiêu đề được bao phủ bởi độ mờ thả xuống: 0. – pie6k

0

cố gắng để làm cho một yếu tố mà không chấp nhận nhấp vào bằng cách áp dụng chỉ mục z vào giá trị âm.

a{z-index: -999;} 

Oh! Tôi hiểu vấn đề của bạn. Bạn có thể đặt visibility: collapse; tốt hơn là ẩn tôi nghĩ.

+0

http://jsfiddle.net/Eh7jr/2/ nó không trơn tru – pie6k

+0

đặt z-index âm thành a. http://jsfiddle.net/Eh7jr/4/ –

1

Nhận thấy ví dụ trong Fiddle JS trên đã bị hỏng, sửa mã ở đây:

<style> 
div { 
    position: absolute; 
    transition: all 2s; 
} 
div.opa { 
    opacity: 0; 
    visibility:hidden; 
} 
</style> 
<div class=opa>dsdsds</div> 
<br> <br> 
<p><a href="#">clickme</a></p> 
<script> 
$('a').click(function(){ 
    $('div').toggleClass('opa');  
}) 
</script> 

Cố định các fiddle:

8

Bạn có thể làm điều đó bằng 100% mã tinh khiết CSS.

.menu > li > ul{ 
    display: none; 
} 
.menu > li:hover > ul { 
    display: block; 
    animation-duration: 0.5s; 
    animation-name: fadeInFromNone; 
    animation-fill-mode: forwards; 
    -webkit-animation-duration: 0.5s; 
    -webkit-animation-name: fadeInFromNone; 
    -webkit-animation-fill-mode: forwards; 
    -ms-animation-duration: 0.5s; 
    -ms-animation-name: fadeInFromNoneIE; 
    -ms-animation-fill-mode: forwards; 
} 
@-webkit-keyframes fadeInFromNone { 
    0% { 
     opacity: 0 
    } 

    1% { 
     opacity: 0 
    } 

    100% { 
     opacity: 1 
    } 
} 

@keyframes fadeInFromNoneIE { 
    0% { 
     opacity: 0 
    } 

    1% { 
     opacity: 0 
    } 

    100% { 
     opacity: 1 
    } 
} 

@keyframes fadeInFromNone { 
    0% { 
     opacity: 0 
    } 

    1% { 
     opacity: 0 
    } 

    100% { 
     opacity: 1 
    } 
} 
+0

Sử dụng 'display: none' khi phần tử không phải là': hover' sẽ tạo ** fadeOut ** ngay lập tức (không có hoạt ảnh nào cả). Tôi vẫn không thể tìm ra giải pháp tốt hơn cho đến ngày hôm nay. – maszynka

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