interpolate-size
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Thuộc tính CSS interpolate-size cho phép bạn bật hoạt hình và chuyển tiếp giữa giá trị <length-percentage> và intrinsic size, fit-content, hoặc max-content.
Thuộc tính này thường được dùng để tạo hoạt hình cho width và/hoặc height của một container giữa <length-percentage> và kích thước đầy đủ của nội dung (tức là giữa trạng thái "đóng" và "mở" hay "ẩn" và "hiện") khi tạo hoạt hình cho thuộc tính CSS không phải box-model như transform không phải là giải pháp khả thi.
Note:
Hành vi được chọn bởi interpolate-size không thể được bật mặc định trên toàn web vì nhiều trang web sử dụng stylesheet giả định rằng các giá trị kích thước nội tại không thể được tạo hoạt hình. Việc bật mặc định sẽ gây ra một số vấn đề về tương thích ngược (xem thảo luận CSS WG liên quan).
Cú pháp
/* Giá trị từ khóa */
interpolate-size: allow-keywords;
interpolate-size: numeric-only;
/* Giá trị toàn cục */
interpolate-size: inherit;
interpolate-size: initial;
interpolate-size: revert;
interpolate-size: revert-layer;
interpolate-size: unset;
Giá trị
allow-keywords-
Bật nội suy giữa giá trị
<length-percentage>và giá trị kích thước nội tại, để cho phép tạo hoạt hình giữa hai giá trị. numeric-only-
Hành vi mặc định — các giá trị kích thước nội tại không thể được nội suy.
Mô tả
Đặt interpolate-size: allow-keywords bật nội suy giữa giá trị <length-percentage> và giá trị kích thước nội tại. Lưu ý rằng nó không bật tạo hoạt hình giữa hai giá trị kích thước nội tại. Một đầu của hoạt hình phải là <length-percentage>.
Giá trị interpolate-size được kế thừa, vì vậy việc tạo hoạt hình đến (hoặc từ) giá trị kích thước nội tại có thể được bật cho toàn bộ tài liệu bằng cách đặt nó trên root của tài liệu:
:root {
interpolate-size: allow-keywords;
}
Nếu bạn muốn giới hạn phạm vi, bạn có thể đặt nó trên phần tử container liên quan. Ví dụ sau chỉ bật nội suy kích thước nội tại cho <main> và các phần tử con của nó:
main {
interpolate-size: allow-keywords;
}
Note:
Giá trị trả về của hàm calc-size() cũng có thể được nội suy. Thực tế, việc bao gồm calc-size() trong giá trị thuộc tính tự động áp dụng interpolate-size: allow-keywords cho lựa chọn. Tuy nhiên, vì interpolate-size được kế thừa như đã giải thích ở trên, nó là giải pháp ưu tiên để bật hoạt hình kích thước nội tại trong hầu hết các trường hợp. Bạn chỉ nên dùng calc-size() để bật hoạt hình kích thước nội tại nếu chúng cũng cần tính toán.
Các giá trị có thể được nội suy
Các giá trị nội tại sau đây hiện có thể được chọn vào hoạt hình:
automin-contentmax-contentfit-contentcontent(dành cho các container được định kích thước bằngflex-basis).
Định nghĩa hình thức
| Initial value | numeric-only |
|---|---|
| Applies to | all elements |
| Inherited | yes |
| Computed value | as specified |
| Animation type | Not animatable |
Cú pháp hình thức
interpolate-size =
numeric-only |
allow-keywords
Ví dụ
>Sử dụng interpolate-size cơ bản
Ví dụ này minh họa cách đặt interpolate-size: allow-keywords trên tài liệu để bật hoạt hình liên quan đến kích thước nội tại. Demo có một badge nhân vật/"thẻ tên", có thể hover hoặc focus để hiển thị thông tin về nhân vật. Việc hiển thị được xử lý bởi chuyển tiếp height giữa một độ dài cố định và max-content.
HTML
HTML chứa một phần tử <section> với tabindex="0" được đặt trên nó để nó có thể nhận focus từ bàn phím. <section> chứa các phần tử <header> và <main>, mỗi phần tử có nội dung con riêng.
<section tabindex="0">
<header>
<h2>Tanuki</h2>
</header>
<main>
<p>Tanuki is the silent phantom of MDN.</p>
<ul>
<li><strong>Height</strong>: 3.03m</li>
<li><strong>Weight</strong>: 160kg</li>
<li><strong>Tech Fu</strong>: 7</li>
<li><strong>Bad Jokes</strong>: 9</li>
</ul>
</main>
</section>
CSS
Trong CSS, trước tiên chúng ta đặt interpolate-size: allow-keywords trên :root, để bật nó cho toàn bộ tài liệu.
:root {
interpolate-size: allow-keywords;
}
Sau đó chúng ta đặt height của <section> thành 2.5rem và overflow thành hidden để chỉ hiển thị <header> theo mặc định, sau đó chỉ định transition tạo hoạt hình cho height của <section> trong 1 giây khi trạng thái thay đổi. Cuối cùng, chúng ta đặt height của <section> trên :hover và :focus thành max-content.
section {
height: 2.5rem;
overflow: hidden;
transition: height ease 1s;
}
section:hover,
section:focus {
height: max-content;
}
Phần còn lại của CSS đã bị ẩn để ngắn gọn.
Kết quả
Hãy thử hover qua <section> hoặc focus vào nó qua bàn phím — nó sẽ tạo hoạt hình đến chiều cao đầy đủ, hiển thị toàn bộ nội dung.
Đặc tả kỹ thuật
| Specification |
|---|
| CSS Values and Units Module Level 5> # interpolate-size> |
Tương thích trình duyệt
Xem thêm
calc-size()- Animate to height: auto; (and other intrinsic sizing keywords) in CSS trên developer.chrome.com (2024)