:hover действует на потомка вместе с родителем. Как этого избежать в CSS?

Суть: есть контейнер div, в нем контент с изображением img. Контейнер меньше контента и скрывает лишнюю часть картинки overflow:hidden. При наведении нужно увеличить границы контейнера до размера изображения. Но вместе с контейнером увеличивается и часть изображения. Как отвязать div от img при трансформации (запретить трансформировать вложенный контент)?

_________________________________________________________________________________________
<body>
    <div class="container"><img src="/img.jpg" alt="img" class="content"></div>
</body>
_________________________________________________________________________________________
.container {                          //изображение 300*300 пикселей,  
    width: 100px;                       рамка контейнера 100*100 пикселей.
    height: 100px;
    overflow: hidden;
    transition: ease 1s;
    transform-origin: left top;
}
.container:hover {                   //изображение 900*900, рамка 300*300,а 
    transform: scale(3);               должно быть:изображение 300*300 и рамка 300*300!
}
_________________________________________________________________________________________

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

Автор решения: De.Minov

scale(), как и многие другие функции transform, изменяет не только элемент на котором вызван, но и его дочерние элементы.

Самый простой способ увеличить элемент, но не трогать его дочерние - задать дочерним противоположное значение на уменьшение.

body {height: 100vh; overflow: hidden; margin: 0;}

.parent, .child {
  display: block;
  position: absolute;
  transition: transform .2s ease;
}

.parent {
  width: 100px;
  height: 100px;
  background: red;
  left: calc(50% - 50px);
  top: calc(50% - 50px);
}

.child {
  width: 50px;
  height: 50px;
  background: blue;
  left: calc(50% - 25px);
  top: calc(50% - 25px);
}

.parent:hover {
  transform: scale(3);
}

.parent:hover .child {
  transform: scale(calc(1 / 3));
}
<div class="parent">
  <div class="child"></div>
</div>

→ Ссылка
Автор решения: Михаил Камахин

Я предлагаю просто сделать два отдельных слоя, два блока в родителе.
При наведении на родителя можно изменять любого ребёнка как угодно.
Родитель при этом не трансформируется, это удобно

* {
  box-sizing: inherit;
}

html, body {
  height: 100%;
}

html {
  box-sizing: border-box;
}

body {
  margin: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

.parent {
  position: relative;
  cursor: pointer;
}

.parent {
  --size: 50px;
  width: var(--size);
  height: var(--size);
}

.parent__layer {
  position: absolute;
  left: 0;
  top: 0;
}

.parent__layer_1 {
  width: 100%;
  height: 100%;
  background-color: red;
  transition: transform 0.2s ease-in-out;
}

.parent__layer_2 {
  left: calc(50% - var(--size) / 4);
  top: calc(50% - var(--size) / 4);
  width: 50%;
  height: 50%;
  background-color: black;
}

.parent:hover .parent__layer_1 {
  transform: scale(3);
}
<div class="parent">
  <div class="parent__layer parent__layer_1"></div>
  <div class="parent__layer parent__layer_2"></div>
</div>

→ Ссылка