animation-range-end

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Thuộc tính animation-range-end trong CSS đặt điểm trên dòng thời gian nơi hoạt ảnh sẽ kết thúc.

Cú pháp

css
/* Giá trị từ khóa hoặc phần trăm độ dài */
animation-range-end: normal;
animation-range-end: 80%;
animation-range-end: 700px;

/* Giá trị phạm vi dòng thời gian có tên */
animation-range-end: cover;
animation-range-end: contain;
animation-range-end: cover 80%;
animation-range-end: contain 700px;

/* Giá trị toàn cục */
animation-range-end: inherit;
animation-range-end: initial;
animation-range-end: revert;
animation-range-end: revert-layer;
animation-range-end: unset;

Giá trị

normal

Đại diện cho điểm kết thúc của dòng thời gian. Đây là giá trị mặc định.

<length-percentage>

Chỉ định giá trị độ dài hoặc phần trăm được đo từ đầu dòng thời gian.

<timeline-range-name>

Chỉ định phạm vi dòng thời gian được đặt tên trong dòng thời gian tổng thể. Phạm vi bắt đầu tại 0%.

<timeline-range-name> <length-percentage>

Chỉ định giá trị độ dài hoặc phần trăm được đo từ đầu phạm vi dòng thời gian được đặt tên cụ thể.

Mô tả

Thuộc tính animation-range-end chỉ định điểm kết thúc của phạm vi đính kèm của hoạt ảnh. Thay đổi điểm kết thúc của phạm vi đính kèm có thể dịch chuyển điểm kết thúc của hoạt ảnh, tức là điểm mà các keyframe được ánh xạ đến 100% tiến trình đáp xuống khi số lần lặp lại là 1, và cũng có thể rút ngắn thời lượng hiệu quả của hoạt ảnh.

Giá trị thuộc tính có thể là normal, <length-percentage>, hoặc <timeline-range-name> với <length-percentage> tùy chọn. Nếu giá trị <timeline-range-name> không bao gồm <length-percentage>, mặc định là 100%.

Thuộc tính animation-range-end được bao gồm trong viết tắt animation như một giá trị chỉ đặt lại. Điều này có nghĩa là sử dụng viết tắt animation sẽ đặt lại bất kỳ giá trị animation-range-end đã khai báo trước về normal; viết tắt không thể được dùng để đặt giá trị animation-range-end mới. Khi tạo hoạt ảnh cuộn trang CSS, bạn nên khai báo animation-range-end sau khai báo bất kỳ viết tắt animation nào để tránh đặt lại giá trị về normal.

Thuộc tính animation-range-end, cùng với thuộc tính animation-range-start, cũng có thể được đặt bằng viết tắt animation-range.

Định nghĩa hình thức

Initial valuenormal
Applies toall elements
Inheritedno
PercentagesRelative to the specified named timeline range if specified, otherwise relative to the entire timeline
Computed valueA list where each item may be 'normal', a length percentage, or a timeline range name and a length percentage
Animation typeNot animatable

Cú pháp hình thức

animation-range-end = 
[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#

<length-percentage> =
<length> |
<percentage>

Ví dụ

Tạo dòng thời gian tiến trình view với điểm kết thúc phạm vi

Trong ví dụ này, animation-range-end được áp dụng cho một phần tử được tạo hoạt ảnh thông qua dòng thời gian tiến trình view. Điều này khiến hoạt ảnh đạt đến keyframe cuối cùng trước khi phần tử đến cuối viewport chứa nó.

HTML

Ở giữa một khối văn bản dài, chúng ta đã thêm một phần tử mà chúng ta sẽ tạo hoạt ảnh. Chúng ta đã thêm rất nhiều văn bản để đảm bảo nội dung tràn ra ngoài container; phần văn bản thừa được ẩn ở đây để ngắn gọn.

html
<div class="animatedElement">

Chúng ta cũng thêm một checkbox sẽ bật/tắt thuộc tính animation-fill-mode, để bạn có thể xem thuộc tính này ảnh hưởng như thế nào đến các hoạt ảnh có dòng thời gian rút ngắn.

html
<label>
  <input type="checkbox" /> Add <code>animation-fill-mode: forwards;</code>
</label>

CSS

Chúng ta đã xác định một dòng thời gian tiến trình view bằng cách đặt hàm view() làm giá trị của thuộc tính animation-timeline. Khai báo này được đặt sau viết tắt animation để tránh đặt lại giá trị thuộc tính dạng dài.

Chúng ta cũng đặt animation-range-end để hoạt ảnh kết thúc sớm hơn mong đợi.

css
.animatedElement {
  background-color: deeppink;
  animation: appear 1ms linear;
  animation-timeline: view();
  animation-range-end: exit 25%;
}

@keyframes appear {
  from {
    background-color: rebeccapurple;
    opacity: 0;
    transform: scaleX(0);
  }

  to {
    background-color: darkturquoise;
    opacity: 0.75;
    transform: scaleX(0.75);
  }
}

Khi checkbox được chọn, thuộc tính animation-fill-mode được áp dụng cho phần tử có hoạt ảnh:

css
:has(:checked) .animatedElement {
  animation-fill-mode: forwards;
}

Các kiểu khác được áp dụng trong ví dụ này đã được ẩn ở đây để ngắn gọn.

Kết quả

Cuộn để xem phần tử tạo hoạt ảnh. Sau đó bật/tắt checkbox ở cuối khối văn bản và cuộn lại. Lưu ý cách phần tử kết thúc hoạt ảnh khi đi qua 75% viewport, và cách nó trở về trạng thái mặc định tại thời điểm đó khi thuộc tính animation-fill-mode không được áp dụng.

Thông số kỹ thuật

Specification
Scroll-driven Animations
# animation-range-end

Khả năng tương thích trình duyệt

Xem thêm