Tôi biết rằng bạn đặc biệt nói "bạn có thể làm điều này trong JavaScript" hay không, nhưng bạn không cần sử dụng JavaScript. Tôi khá chắc chắn rằng bằng chứng về khái niệm bạn liên kết để chỉ sử dụng jQuery như một cách để làm cho các hình ảnh động rơi trở lại JavaScript để tất cả các trình duyệt chơi tốt đẹp với các hình ảnh động. Vì bạn đang phát triển riêng cho Mobile Safari, bạn không cần phải sử dụng jQuery cho điều này ngoại trừ sử dụng một plugin lịch sử để đẩy và bật các trạng thái để làm cho nút quay lại của trình duyệt hoạt động; điều này hoàn toàn có thể thực hiện được thông qua các thuộc tính chuyển tiếp CSS và bộ chọn giả :target
.
Vì vậy, như một sự thay thế, bạn sẽ có thể làm điều gì đó như thế này:
Trong HTML:
<div id="thing-that-will-transition">
<a href="#thing-that-will-transition>click this to transition the div</a>
</div>
Trong CSS:
#thing-that-will-transition
{
(bunch of properties)
-webkit-transition: margin-left [the rest of your transition values]
}
#thing-that-will-transition:target
{
margin-left: [your properties]
}
Chừng trận URL mảnh của bạn với tên của phần tử mà bạn muốn chuyển đổi thì bạn nên có thể đẩy đoạn vào URL bằng JavaScript nếu bạn abs olutely phải thay vì sử dụng neo với một fragment href trong khi vẫn đang có quá trình chuyển đổi diễn ra. Và nếu bạn sử dụng một plugin lịch sử jQuery hoặc tự đẩy và popping của ngăn xếp lịch sử thì bạn vẫn nhận được hành vi nút quay lại cho ứng dụng của mình.
Tôi biết bạn đã yêu cầu cụ thể một giải pháp JavaScript để kích hoạt hoạt ảnh CSS, nhưng tôi không chắc tại sao đây là những gì bạn cần. Xin lỗi nếu điều này không giúp bạn gì cả.
CẬP NHẬT: Here's a jsFiddle demonstrating the above. Nó sử dụng plugin lịch sử jQuery this để quản lý ngăn xếp lịch sử, do đó bạn vẫn có thể nhận được hành vi nút quay lại/chuyển tiếp có thể chấp nhận được từ URL của đoạn.Thẻ anchor sử dụng phương thức "push" hoặc "load" của plugin trong onClick của nó với một đoạn tiêu chuẩn trong thuộc tính href làm dự phòng cho các trình duyệt mà không bật JS.
CẬP NHẬT 2:Here's another jsFiddle sử dụng chuyển đổi/bản dịch thay vì chuyển tiếp.
CẬP NHẬT 3 (bởi roosteronacid):
Và như để nhận được hình ảnh động đi qua JavaScript, bạn có thể làm:
var element = document.getElementById("...");
setTimeout(function()
{
element.style.webkitTransitionDuration = "0.3s";
element.style.webkitTransitionTimingFunction = "ease-out";
element.style.webkitTransform = "translate3d(300px, 0, 0)";
}, 0);
Nguồn
2011-06-27 20:57:59
tôi đã tạo một plugin nhỏ cho lần này, nó sử dụng hoạt ảnh CSS3 thuần túy nếu có thể, nếu không sử dụng hàm animate gốc của jQuery: http://jsfiddle.net/WsR5s/12/ (hỗ trợ: bộ chọn hoạt ảnh và .stop()) – meo