aspect-ratio
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
Thuộc tính aspect-ratio CSS cho phép bạn xác định tỷ lệ chiều rộng trên chiều cao mong muốn của hộp phần tử. Điều này có nghĩa là ngay cả khi kích thước container cha hoặc viewport thay đổi, trình duyệt sẽ điều chỉnh kích thước phần tử để duy trì tỷ lệ chiều rộng trên chiều cao được chỉ định. aspect ratio được chỉ định được sử dụng trong tính toán kích thước tự động và một số hàm bố cục khác.
Ít nhất một trong các kích thước của hộp cần là tự động để aspect-ratio có bất kỳ hiệu ứng nào. Nếu cả chiều rộng lẫn chiều cao đều không phải kích thước tự động, thì tỷ lệ được cung cấp không có hiệu ứng trên kích thước ưa thích của hộp.
Try it
aspect-ratio: auto;
aspect-ratio: 1 / 1;
aspect-ratio: 16 / 9;
aspect-ratio: 0.5;
<section id="default-example">
<img
class="transition-all"
height="640"
id="example-element"
src="/shared-assets/images/examples/plumeria.jpg"
width="466" />
</section>
#example-element {
height: 100%;
width: auto;
}
Cú pháp
aspect-ratio: 1 / 1;
aspect-ratio: 1;
/* dự phòng về 'auto' cho các phần tử thay thế */
aspect-ratio: auto 3/4;
aspect-ratio: 9/6 auto;
/* Giá trị toàn cục */
aspect-ratio: inherit;
aspect-ratio: initial;
aspect-ratio: revert;
aspect-ratio: revert-layer;
aspect-ratio: unset;
Thuộc tính này được chỉ định là một hoặc cả hai từ khóa auto hoặc <ratio>. Nếu cả hai được cung cấp và phần tử là replaced element, chẳng hạn như <img>, thì tỷ lệ đã cho được sử dụng cho đến khi nội dung được tải. Sau khi nội dung được tải, giá trị auto được áp dụng, vì vậy tỷ lệ intrinsic của nội dung được tải được sử dụng.
Nếu phần tử không phải là replaced element, thì ratio đã cho được sử dụng.
Giá trị
auto-
Replaced elements với tỷ lệ intrinsic sử dụng tỷ lệ đó, nếu không hộp không có tỷ lệ ưa thích. Các tính toán kích thước liên quan đến tỷ lệ intrinsic luôn làm việc với kích thước hộp nội dung.
<ratio>-
Tỷ lệ ưa thích của hộp là tỷ lệ được chỉ định của
width/height. Nếuheightvà ký tự dấu gạch chéo trước nó bị bỏ qua,heightmặc định là1. Các tính toán kích thước liên quan đến tỷ lệ ưa thích làm việc với kích thước của hộp được chỉ định bởibox-sizing. auto && <ratio>-
Khi cả
autovà<ratio>được chỉ định cùng nhau,autođược sử dụng nếu phần tử là replaced element có tỷ lệ tự nhiên, như phần tử<img>. Nếu không, tỷ lệ được chỉ định củawidth/heightđược sử dụng làm tỷ lệ ưa thích.
Định nghĩa chính thức
| Initial value | auto |
|---|---|
| Applies to | all elements except inline boxes and internal ruby or table boxes |
| Inherited | no |
| Computed value | as specified |
| Animation type | by computed value type |
Cú pháp chính thức
aspect-ratio =
auto ||
<ratio>
<ratio> =
<number [0,∞]> [ / <number [0,∞]> ]?
Ví dụ
>Khám phá hiệu ứng aspect-ratio với chiều rộng cố định
Trong ví dụ này, chiều rộng của các phần tử <div> được đặt thành 100px và chiều cao là auto. Vì giá trị chiều rộng cố định ở đây, thuộc tính aspect-ratio chỉ ảnh hưởng đến chiều cao của các phần tử <div> để duy trì tỷ lệ chiều rộng trên chiều cao được chỉ định.
div {
width: 100px;
height: auto;
}
div:nth-child(1) {
aspect-ratio: 1/1;
}
div:nth-child(2) {
aspect-ratio: 0.5;
}
div:nth-child(3) {
aspect-ratio: 1;
}
div:nth-child(4) {
aspect-ratio: 1/0.5;
}
div:nth-child(5) {
aspect-ratio: 16/9;
}
Dự phòng về tỷ lệ tự nhiên
Trong ví dụ này, chúng ta dùng hai phần tử <img>. Phần tử đầu tiên không có thuộc tính src được đặt thành file hình ảnh.
<img src="" /> <img src="plumeria.jpg" />
Code sau đây đặt 3/2 là tỷ lệ ưa thích và auto là dự phòng.
img {
display: inline;
width: 200px;
border: 2px dashed red;
background-color: lime;
vertical-align: top;
aspect-ratio: 3/2 auto;
}
Lưu ý hình ảnh đầu tiên không có nội dung thay thế vẫn giữ tỷ lệ 3/2, trong khi hình ảnh thứ hai sau khi nội dung được tải sử dụng tỷ lệ tự nhiên của hình ảnh.
Đặc tả
| Specification |
|---|
| CSS Box Sizing Module Level 4> # aspect-ratio> |