2013-04-23 37 views
14

Đã tự hỏi liệu có cách nào để thực hiện chuyển tiếp css khi div được cấp một lớp nhất định hay không. Ví dụ tốt nhất của tôi là trang web này http://ideaware.co/Cố gắng thực hiện chuyển đổi CSS trên một thay đổi lớp học

Khi bạn cuộn xuống và tiêu đề trở nên cố định, màu nền sẽ thay đổi và có độ mờ. Thực sự đẹp trai.

Tôi đang làm việc trên mẫu tôi có ở đây http://www.niviholdings.com/collide/ và điều tôi muốn làm là khi điều hướng < trở thành cố định, tôi muốn < ul> trượt sang phải.

Hy vọng rằng tôi đang giải thích điều này một cách chính xác.

+0

Hấp dẫn! Mã của bạn có vẻ hoàn toàn đúng! Tôi không biết tại sao nó không hoạt động. –

+0

Nó phải là CSS của tôi sau đó gây ra im nhận được lớp học được thêm vào và nó là lề phải, nó chỉ không áp dụng quá trình chuyển đổi. –

+0

Tôi nghĩ rằng đó là js, chỉ không biết tại sao. Chrome thực hiện quá trình chuyển đổi nhưng với việc định vị lại trước hoạt ảnh. Tôi nghĩ rằng nó có thể có một cái gì đó để làm với thứ tự bạn áp dụng các lớp học. –

Trả lời

9

2 điểm tôi thấy rằng thể giúp đỡ:

Chuyển tiếp từ auto đến một giá trị cố định có thể là một vấn đề. Cuối cùng, bạn có thể thử đặt margin-left của .main-nav-ul thành giá trị cố định theo mặc định, không chỉ khi nó dính.

Thứ hai là (và điều này là hacky). Hãy cố gắng áp dụng lớp học cho số .main-nav-ul bị trễ của bạn:

setTimeout(function() { 
    $('.main-nav-ul').addClass('nav-slide'); // line 57 in jquery.sticky.js 
}, 100); 
+0

Cuộc gọi tốt trên tự động, nó đã được chuyển sang Chrome một cách chắc chắn, chứ không phải tự động sửa lỗi đó. Phải thử thời gian chờ vẫn còn ... –

+0

Điều đó đã làm nó, khi tôi có đủ đại diện, tôi sẽ upvote tất cả các bạn để giúp đỡ :) sự chậm trễ làm cho nó hoạt động trong FF. –

+0

tại sao thời gian chờ thực hiện thủ thuật? Ý tôi là nó hoạt động !! Nhưng tại sao? Không nên nó hoạt động mà không có thời gian chờ? –

4

Transitions CSS trong 4 bước đơn giản

  1. Hãy chắc chắn rằng những gì bạn muốn làm là có thể với hiệu ứng chuyển tiếp CSS. Bạn có thể làm điều đó bằng cách checking the W3C docs.

  2. Thêm chuyển tiếp và kiểu bắt đầu của bạn vào phần tử cơ sở.

  3. Thêm lớp hoặc trạng thái có kiểu đã thay đổi.

  4. Thêm cơ chế để thêm lớp học (nếu có).

Ví dụ nhanh, giả sử bạn muốn tạo hiệu ứng thay đổi ký quỹ trên :hover. Bạn sẽ chỉ làm điều này:

element { 
    margin-left: 10px; 
    transition: margin-left linear .5s; 
} 

element:hover { 
    margin-left: 0; 
} 

And here's a quick demo.

+0

Đó là sử dụng một lớp giả. Trong ví dụ và ví dụ của tôi nó là một tiêu đề hoặc một nav mà tôi muốn quá trình chuyển đổi được áp dụng khi nó đạt đến một điểm (hoặc dính vào đầu). Liên kết đầu tiên trong ví dụ của tôi là làm điều đó bằng cách nào đó. –

+0

@ user2312618 - Rất có thể, đó là JavaScript. Chỉ cần đặt JavaScript để thêm lớp khi một sự kiện khác được kích hoạt, chẳng hạn như khi tiêu đề của bạn được sửa. – Shauna

+0

Vâng tôi đã thử điều đó, tôi nghĩ rằng đó là bởi vì nó là danh sách ul tôi muốn di chuyển nhưng < nav > là thứ thực sự trở nên dính. (danh sách không theo thứ tự nằm trong phần tử nav). –

6

Chắc chắn bạn có thể ...

#someElement { 
    background: red; 
    position: relative; 
    -webkit-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    transition: all 1s linear; 
    left: 0; 
} 

#someElement.someClass { 
    background: green; 
    left: 50px; 
} 

DEMO

+1

Có thể thực hiện mà không cần nhấp chuột không? Giống như khi một < ul > được cấp một lớp học? Về cơ bản, tôi chỉ muốn danh sách không sắp xếp của tôi có lề phải một số pixel khi nó chạm đỉnh và trở thành "dính". –

+0

Nhấp chuột chỉ là cách thêm lớp học. Vì vậy, có, đó là chính xác những gì các ví dụ cho thấy. Bạn đang thêm lớp học như thế nào? – Turnip

+0

Tôi đã làm một .addClass bên trong jquery.sticky.js đi kèm với mẫu. Chỉ cần thêm nó trong phần nơi vị trí thực tế cố định diễn ra. –

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