2013-04-24 26 views
11

Tôi đang cố gắng áp dụng một sự chậm trễ trước khi bắt đầu chuyển tiếp CSS trên sự kiện di chuột. Mã CSS của tôi ở bên dưới, hãy cho tôi biết cách áp dụng thời gian trễ trước khi bắt đầu chuyển đổi CSS khi di chuột.Tôi muốn áp dụng sự chậm trễ trên con chuột ra trong css

Tôi muốn đạt được rằng menu vẫn ổn định trong một thời gian (ví dụ: 3 giây) sau khi người dùng di chuyển con trỏ chuột ra khỏi menu.

.timnav li .dropdown { 
    width: auto; 
    min-width: 0px; 
    max-width: 230px; 
    height: 0; 
    position: absolute; 
    overflow: hidden; 
    z-index: 999; 
    background:rgba(255, 255, 255, 0.8); 
    } 

.timnav li:hover .dropdown { 
    min-height: 60px; 
    max-height: 500px; 
    height: auto; 
    width: 100%; 
    padding: 0; 
      -webkit-transition: delay .5s ease-in-out; 
     -moz-transition: delay .5s ease-in-out; 
     -o-transition: delay .5s ease-in-out; 
} 

.timnav li .dropdown ul { 
    margin: 0; 
    margin-top:7px; 


} 

.timnav li .dropdown ul > li { 
    display: block; 
    width: 100%; 
    float: left; 
    text-align: left; 
    height: auto; 
    border-radius: none; 
    padding-bottom:2px; 
} 


    .timnav li .dropdown .dropdown2{ 
    display: none; 
    width: 100%; 
    float: left; 
    text-align: left; 
    height: auto; 
    border-radius: none; 
} 

    .timnav li .dropdown ul > li:hover .dropdown2{ 
    display: block; 
    width: 100%; 
    float: left; 
    text-align: left; 
    height: auto; 
    border-radius: none; 

} 

    .timnav li .dropdown .dropdown2:hover { 
    display: block; 
    width: 100%; 
    float: left; 
    text-align: left; 
    height: auto; 
    border-radius: none; 


} 


    .timnav li .dropdown .dropdown2 li a { 
    display: block; 
    padding-left:7px !important; 
    height:6 !important; 
    padding-top:8px; 
    background: url(../images/nav-bg.jpg) repeat; color:#fff; 

} 


.timnav li .dropdown ul > li a { 
    display: block; 
    line-height: 26px; 
    height: 22px; 
    padding: 10px; 
    background: url(../images/nav-crrent.jpg) repeat; color:#FFFFFF; 

} 

.timnav ul .dropdown ul li:first-child a { 
    border-radius: 0; 
} 

.timnav li .dropdown li a:hover { 
    background: url(../images/nav-bg.jpg) repeat; color:#000; 
} 

Trả lời

21

Bạn có thể thêm một sự chậm trễ đến một sự chuyển tiếp, cú pháp như sau:

transition: all 0.5s ease-in-out 3s; 

Vì vậy

transition: <property> <duration> <timing-function> <delay>; 

Cú pháp là như nhau cho tất cả các tiền tố cũng có phiên bản.

Tôi đã tạo bản trình diễn này, bởi vì bạn cần phải làm điều gì đó hơi phức tạp để làm cho mục đó xuất hiện không chậm trễ, nhưng hãy trì hoãn trước khi nó xuất hiện.

http://jsfiddle.net/pgqM2/

Bí quyết là để tái xác định quá trình chuyển đổi để thêm sự chậm trễ 3s khi không có di chuột, nhưng để có một sự chậm trễ 0s khi có một di chuột:

li ul { 
    opacity: 0; 
    transition: all 0.5s ease 3s; 
} 

li:hover ul { 
    opacity: 1; 
    transition: all 0.5s ease 0s; 
} 
+0

Cảm ơn nhưng nó không hoạt động, bạn có thể cho tôi biết nơi tôi nên nhúng chậm trễ webkit, Xin vui lòng kiểm tra tôi css cods. là bạn muốn liên kết trực tiếp sau đó tôi sẽ đăng ở đây. –

+0

Tôi đã thêm một liên kết vào một bản trình diễn JSFiddle đơn giản. Cú pháp giống nhau cho tất cả các tiền tố, cho dù đó là '-o' hay' -webkit', v.v. – Fenton

+0

Cảm ơn Steve Fenton, nó hoạt động nhưng không phụ thêm toàn bộ, trình đơn thả xuống ẩn nhanh chóng. và trên chrome trên chuột thả xuống cắt giảm để peice. không hiển thị toàn bộ. tôi sẽ gửi cho bạn URL trang web nếu bạn có thể giúp tôi. –

6

Có thuộc tính transition-delay trong CSS. Chỉ cần thêm mã này vào mã của bạn và bạn sẽ nhận được hiệu ứng mong muốn.

transition-delay:3s; 

Với mục đích thuộc tính chuyển đổi tốc ký, đây là một hình ảnh mà tiền nó lên

transition: <property> || <duration> || <timing-function> || <delay> [, ...];

Vì vậy, trong trường hợp của bạn nó sẽ trông như thế này

div:hover { 
 
    -webkit-transition: .5s ease-in-out 3s; 
 
    -moz-transition: .5s ease-in-out 3s; 
 
    -o-transition: .5s ease-in-out 3s; 
 
    transition: .5s ease-in-out 3s; 
 
    color: red; 
 
    cursor: pointer; 
 
}
<div>Hover me. There is a delay!</div>

Đây là một fiddle để chứng minh

+0

Cảm ơn nhưng nó không hoạt động, bạn có thể cho tôi biết nơi tôi nên nhúng chậm trễ webkit, Xin vui lòng kiểm tra tôi css cods. là bạn muốn liên kết trực tiếp sau đó tôi sẽ đăng ở đây. –

+0

@TimJohn những gì không hoạt động? –

+0

Hãy đảm bảo sử dụng phiên bản chưa được sửa đổi (cũng hỗ trợ thêm IE). (Và lưu ý rằng Chrome 26, Firefox 16 và Opera 12.1 tất cả các 'chuyển tiếp' không được sửa đổi, vì vậy ít nhất '-moz-' có thể không cần thiết lâu hơn nữa nếu như vậy.) – Ryan

0

Bạn có thể sử dụng thuộc tính css3 transition-delay để trì hoãn thực thi css. Nhấp vào "Tự thử" để xem ví dụ.

+0

Cảm ơn nhưng nó không hoạt động, bạn có thể cho tôi biết nơi tôi nên nhúng chậm trễ webkit, Xin vui lòng kiểm tra tôi css cods. là bạn muốn liên kết trực tiếp sau đó tôi sẽ đăng ở đây. –

2

Bạn không thể sử dụng chuyển tiếp css khi sử dụng hiển thị không, chỉ giải pháp có display none là js.

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