Как изменить высоту второй колонки грида так, чтобы она оставалась пропорциональной высоте первой колонки?

  • 14 августа 2023 г. 9:36
Ответы на вопрос 1
Чтобы изменить высоту второй колонки грида так, чтобы она оставалась пропорциональной высоте первой колонки, вы можете использовать CSS свойство `grid-template-rows` и задать значение в процентах.

Пример:

```css
.grid-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr;
}

.item-1 {
  grid-column: 1;
  grid-row: 1;
}

.item-2 {
  grid-column: 2;
  grid-row: 1;
  height: 100%;
}
```

Чтобы отключить расширение высоты второго блока при нажатии на блок в ряду, где находятся два блока, вы можете использовать JavaScript для добавления/удаления класса, который будет изменять стиль блока.

Пример:

```html
<div class="grid-container">
  <div class="item-1">Блок 1</div>
  <div class="item-2">Блок 2</div>
  <div class="item-2">Блок 3</div>
</div>

<script>
  const items = document.querySelectorAll('.grid-container>div');

  items.forEach(item => {
    item.addEventListener('click', () => {
      if (item.classList.contains('expanded')) {
        item.classList.remove('expanded');
      } else {
        item.classList.add('expanded');
      }
    });
  });
</script>
```

```css
.grid-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr;
}

.item-1 {
  grid-column: 1;
  grid-row: 1;
}

.item-2 {
  grid-column: 2;
  grid-row: 1;
  height: 100%;
  transition: height 0.5s ease;
}

.item-2.expanded {
  height: auto;
}
```

В данном примере при нажатии на блок `.item-2`, ему будет добавляться класс `.expanded`, который устанавливает `height: auto`, чтобы блок расширялся по содержимому.
Похожие вопросы