css авто ширина

Есть такой код, который показывает простой лоадер (.test):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes donut-spin {
            0% {
                transform: rotate(0deg);
            }

            100% {
                transform: rotate(360deg);
            }
        }

        .test_wrp {
            width: 200px;
            height: 100px;
            background-color: brown;
        }

        .test {
            display: inline-block;
            border: 4px solid rgba(255, 255, 255, 0.1);
            border-left-color: white;
            border-radius: 50%;
            width: 30px;
            height: 30px;
            animation: donut-spin 1.2s linear infinite;
        }
    </style>
</head>

<body>
    <div class="test_wrp">
        <div class="test"></div>
    </div>
</body>

</html>

Как можно растянуть .test на всю ширину родительского блока с сохранением пропорций, указав только параметр height? (Не указывая weight)

Пробую так:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    @keyframes donut-spin {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
    
    .test_wrp {
      width: 200px;
      height: 100px;
      background-color: brown;
    }
    
    .test {
      display: inline-block;
      border: 4px solid rgba(255, 255, 255, 0.1);
      border-left-color: white;
      border-radius: 50%;
      /* Ширина 100% от родителя */
      height: 100%;
      animation: donut-spin 1.2s linear infinite;
    }
  </style>
</head>

<body>
  <div class="test_wrp">
    <div class="test"></div>
  </div>
</body>

</html>

Но результат печален. Так как указан только параметр высоты, ширина теряется. А я хочу, чтобы можно было указать только высоту, при этом ширина подобралась бы сама (с сохранением пропорций). Как это можно реализовать?


Ответы (1 шт):

Автор решения: UserTest013

Если я правильно понял вопрос, то вам надо aspect-ratio

@keyframes donut-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

.test_wrp {
  width: 200px;
  height: 100px;
  background-color: brown;
  text-align: center;
}

.test {
  display: inline-block;
  border: 4px solid rgba(255, 255, 255, 0.1);
  border-left-color: white;
  border-radius: 50%;
  height: 100%;
  aspect-ratio: 1 /1;
  box-sizing: border-box;
  animation: donut-spin 1.2s linear infinite;
}
<div class="test_wrp">
  <div class="test"></div>
</div>

→ Ссылка