CSSライブデモ:aspect-ratio デモボタンをクリックしてみてください!
selector {
    aspect-ratio: auto || <ratio>
    /*
        <ratio>:
         - 横(数値)/縦(数値):横に対する縦の比率です。
         - スラッシュ(/)がない場合は、横/縦比率の値(数値)です。
    */
}
aspect-ratio: 1 / 1; /* '1/1'と同じ。スラッシュ(/)の前後に空白があってもなくても同じ意味として扱われます */
aspect-ratio: 1;
aspect-ratio: 16/9;
aspect-ratio: 1.77;
aspect-ratio: auto;

/* グローバル値 */
aspect-ratio: inherit;
aspect-ratio: initial;
aspect-ratio: revert;
aspect-ratio: revert-layer;
aspect-ratio: unset;
div {
    background-color: orange;
    width: 200px;
    /*
        heightが指定されていない場合、
        heightはautoです。
    */
    aspect-ratio: 1; /* '1/1'と同じ */
}
<div>要素ボックス</div>
実際の適用例
div {
    background-color: orange;
    width: 200px;
    aspect-ratio: 1;
    height: 50px;
    /*
        heightの値がautoでない場合、
        aspect-ratioは動作しません。
    */
}
<div>要素ボックス</div>
実際の適用例
.flex-box {
    display: flex;
    align-items: stretch; /* 注目してください! */
}
.box-1,
.box-2 {
    width: 100px;
}
.box-1 {
    height: 200px;
    background-color: orange;
    margin-right: 15px;
}
.box-2 {
    background-color: red;
    height: auto;
    aspect-ratio: 1/1;
    /*
        align-items: stretchが適用される要素には
        aspect-ratioは動作しません。
    */
}
<section class="flex-box">
    <div class="box-1">要素ボックス - 1</div>
    <div class="box-2">要素ボックス - 2</div>
</section>
実際の適用例
div {
    background-color: orange;
    width: 200px;
    aspect-ratio: 100%; /* パーセント(%)単位の値は使用できないため、動作しません。 */
}
<div>要素ボックス</div>
実際の適用例
<video src="flower.mp4" autoplay muted playsinline loop></video>
video {
    width: 250px;
    border: 1px solid red;
    aspect-ratio: 1/1;
}
実際の適用例
video {
    width: 250px;
    border: 1px solid red;
    aspect-ratio: 1/1;
    object-fit: cover; /* 空白が生じる問題を解決 */
}
実際の適用例:object-fit: coverを適用