Увеличить
при hover, но содержание чтобы осталось прежних размеров

Не могу увеличить блок div при hover і не увеличивать его содержание. Нужен вот такой ефект введите сюда описание изображения


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

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

Нужно использовать трансформации. В данном случае scale().

div {
  border: 1px solid red;
  width: 100px;
  height: 120px;
  transition: 0.2s;
}

div:hover {
  transform: scale(1.1);
}

div:hover .wrapper {
  transform: scale(0.9);
<div><div class="wrapper">блок</div></div>

→ Ссылка
Автор решения: entithat

Можем сделать с помощью относительного позиционирования. Отодвигаем блок на нужное кол-во пикселей влево и вверх и растягиваем.

* {
  padding: 0;
  margin: 0;
}

.list {
  margin-top: 50px;
  display: flex;
  justify-content: center;
}

.card {
  width: 100px;
  height: 200px;
  border: solid 1px #262626;
  background: #fbfbfb;
  border-radius: 6px;
  margin-left: 10px;
  padding: 30px;
}

.card:hover {
  position: relative;
  top: -30px;
  left: -30px;
  padding: 60px;
  margin-right: -60px;
}
<div class="list">
  <div class="card">
    <h3>Text</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been</p>
  </div>
  <div class="card">
    <h3>Text</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been</p>
  </div>
  <div class="card">
    <h3>Text</h3>
    <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been</p>
  </div>
</div>

→ Ссылка
Автор решения: Алекс Данилин

.card {
  height: 200px;
  width: 100px;  
  padding: 15px;
  position: relative;
  z-index: 5;
  transition: all .4s;
  
}
.card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  box-shadow: 2px 2px 3px;
  transition: all .4s;
}
.card:hover::before {
  content: '';
position: absolute;
left: -5%;
width: 110%;
top: -5%;
height: 110%;
background: rgba(255, 0, 0, .3);
z-index: 3;
transition: all .4s;
}
<div class="card">
  lorem12 
</div>

→ Ссылка
Автор решения: CbIPoK2513

Увеличение основного блока идёт на 25% (scale(1.25)), при этом дочерний блок-обёртка должен принимать -25% (scale(0.75)), тогда будет создаваться эффект увеличения блока - без увеличения содержимого.

Так же, чтобы крайние элементы не "увеличивались" за свои приделы - добавить transform-origin относительно "местонахождения блока".

.section {
  display: flex;
  flex-direction: row;
  width: 100%;  
  margin-top: 30px;
}

.section .item {
  display: block;
  width: 100%;
  height: 30vw;
  border-radius: 5px;
  border: 1px solid #ccc;
  background: #eee;
  transition: transform 0.2s ease-in-out;
}

.section .item > .wrap {
  transition: transform 0.2s ease-in-out;
}

.section .item:not(:last-child) {
  margin-right: 10px;
}

.section .item:hover {
  transform: scale(1.25);
}

.section .item:hover > .wrap {
  transform: scale(0.75);
}

.section .item:first-child {
  transform-origin: left center;
}

.section .item:last-child {
  transform-origin: right center;
}
<div class="section">
  <div class="item">
    <div class="wrap">
      <b>item 1</b>
    </div>
  </div>
  <div class="item">
    <div class="wrap">
      <b>item 2</b>
    </div>
  </div>
  <div class="item">
    <div class="wrap">
      <b>item 3</b>
    </div>
  </div>
  <div class="item">
    <div class="wrap">
      <b>item 4</b>
    </div>
  </div>
</div>

→ Ссылка
Автор решения: soledar10

Один из вариантов - вынести слой фона карточки из потока и его уже аниммировать

Пример

body {
  padding: 2rem;
}

.cards {
  display: flex;
}

.card {
  max-width: 33.3333%;
  width: 33.3333%;
  position: relative;
  padding: 1rem;
}

.card:before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #ccc;
  border: 1px solid #000;
  border-radius: 5px;
  z-index: -1;
  transition: transform .3s ease;
}

.card:hover:before {
  z-index: 1;
  transform: scale(1.1)
}

.card__inner {
  position: relative;
  z-index: 1;
}
<div class="cards">
  <div class="card">
    <div class="card__inner">
      <h2 class="card__title">Title</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam pariatur nulla culpa voluptatibus, velit facere dolores hic quis autem libero rem magnam suscipit assumenda non ad nemo neque unde sapiente.</p>
    </div>
  </div>

  <div class="card">
    <div class="card__inner">
      <h2 class="card__title">Title</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam pariatur nulla culpa voluptatibus, velit facere dolores hic quis autem libero rem magnam suscipit assumenda non ad nemo neque unde sapiente.</p>
    </div>
  </div>
  <div class="card">
    <div class="card__inner">
      <h2 class="card__title">Title</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam pariatur nulla culpa voluptatibus, velit facere dolores hic quis autem libero rem magnam suscipit assumenda non ad nemo neque unde sapiente.</p>
    </div>
  </div>
</div>

→ Ссылка