transition вместе с width auto

Долго искал решение среди готовых, но то ли невнимательно искал, то ли их для моей ситуации действительно нет.

Проблема: есть карточки товаров, и в них есть кнопки внутри которой может быть как одна цена, так и новая цена с зачеркнутой старой, т.е. ширина не фиксированная и зависит от количества контента внутри. Задача: мне требуется плавно изменять ширину кнопки, но я никак не могу этого добиться, т.к. с width auto transition не работает, а фиксированную ширину я не могу задать из-за динамически меняющегося контента.

Код: https://playcode.io/1865896


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

Автор решения: w01f
 <div class="card">
        <div class="card__body">
          <span>
            <button>Кнопка</button>
            <p>
              Lorem ipsum dolor sit amet consectetur adipisicing elit.
            </p>
          </span>
        </div>
      </div>
    .card__body {
      display: grid;
      grid-template-columns: 0fr;
      transition: grid-template-columns 0.5s;
      height: 100%;
    }

    .card__body span {
      overflow: hidden;
      white-space: nowrap;
    }

    .card__body:hover {
      display: grid;
      grid-template-columns: 1fr;
      transition: grid-template-columns 0.5s;
    }

Можно использовать display: grid; и вешать анимацию на grid-template-columns, но в этом случае обязателен какой-нибудь элемент, например span внутри card__body, а уже внутрь этого span вставлять свой контент.

→ Ссылка