Document: startViewTransition() method
Baseline
2025
*
Newly available
Since October 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
* Some parts of this feature may have varying levels of support.
Phương thức startViewTransition() của giao diện Document bắt đầu một chuyển đổi khung nhìn cùng tài liệu mới (SPA) và trả về một đối tượng ViewTransition để đại diện cho nó.
Khi startViewTransition() được gọi, một chuỗi các bước được thực hiện như giải thích trong Quá trình chuyển đổi khung nhìn.
Cú pháp
startViewTransition()
startViewTransition(updateCallback)
startViewTransition(options)
Tham số
updateCallbackOptional-
Một callback tùy chọn thường được gọi để cập nhật DOM trong quá trình chuyển đổi khung nhìn SPA, trả về một
Promise. Callback được gọi khi API đã chụp ảnh nhanh trang hiện tại. Khi promise do callback trả về được thỏa mãn, chuyển đổi khung nhìn bắt đầu trong khung hình tiếp theo. Nếu promise do callback trả về bị từ chối, quá trình chuyển đổi bị hủy bỏ. optionsOptional-
Một đối tượng chứa các tùy chọn để cấu hình chuyển đổi khung nhìn. Nó có thể bao gồm các thuộc tính sau:
updateOptional-
Hàm
updateCallbackgiống như mô tả ở trên. Mặc định lànull. typesOptional-
Một mảng các chuỗi đại diện cho các loại được áp dụng cho chuyển đổi khung nhìn. Các loại chuyển đổi khung nhìn cho phép áp dụng có chọn lọc các kiểu CSS hoặc logic JavaScript dựa trên loại chuyển đổi đang xảy ra. Mặc định là một chuỗi rỗng.
Giá trị trả về
Một đối tượng ViewTransition.
Ví dụ
Xem View transition API > Ví dụ để biết danh sách các ví dụ đầy đủ.
Sử dụng cơ bản
Trong chuyển đổi khung nhìn cùng tài liệu này, chúng ta kiểm tra xem trình duyệt có hỗ trợ chuyển đổi khung nhìn không.
Nếu không hỗ trợ, chúng ta đặt màu nền bằng phương pháp dự phòng được áp dụng ngay lập tức.
Ngược lại, chúng ta có thể gọi document.startViewTransition() một cách an toàn với các quy tắc animation mà chúng ta định nghĩa trong CSS.
<main>
<section></section>
<button id="change-color">Change color</button>
</main>
Chúng ta đang đặt animation-duration là 2 giây bằng cách sử dụng phần tử giả ::view-transition-group.
html {
--bg: indigo;
}
main {
display: flex;
flex-direction: column;
gap: 5px;
}
section {
background-color: var(--bg);
height: 60px;
border-radius: 5px;
}
::view-transition-group(root) {
animation-duration: 2s;
}
const colors = ["darkred", "darkslateblue", "darkgreen"];
const colBlock = document.querySelector("section");
let count = 0;
const updateColor = () => {
colBlock.style = `--bg: ${colors[count]}`;
count = count !== colors.length - 1 ? ++count : 0;
};
const changeColor = () => {
// Dự phòng cho trình duyệt không hỗ trợ View Transitions:
if (!document.startViewTransition) {
updateColor();
return;
}
// Với View Transitions:
const transition = document.startViewTransition(() => {
updateColor();
});
};
const changeColorButton = document.querySelector("#change-color");
changeColorButton.addEventListener("click", changeColor);
changeColorButton.addEventListener("keypress", changeColor);
Nếu chuyển đổi khung nhìn được hỗ trợ, nhấp vào nút sẽ chuyển đổi màu từ màu này sang màu khác trong 2 giây. Ngược lại, màu nền được đặt bằng phương pháp dự phòng, không có animation.
Đặc tả kỹ thuật
| Specification |
|---|
| CSS View Transitions Module Level 1> # dom-document-startviewtransition> |
| CSS View Transitions Module Level 2> # dom-document-startviewtransition> |