Для создания такого эффекта галереи изображений можно использовать Flexbox в CSS. Flexbox позволяет выравнивать и распределять пространство среди элементов в контейнере даже когда их размеры неизвестны или динамичны.
Вот пример кода, который реализует галерею изображений с эффектом увеличения изображения при наведении и пропорциональным сжатием остальных изображений:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Image Gallery</title>
<style>
.gallery {
display: flex; /* используем Flexbox */
}
.gallery div {
flex: 1; /* раздаем пространство поровну */
transition: flex-grow 0.5s; /* плавный переход для увеличения изображения */
overflow: hidden; /* избегаем выхода изображения за пределы блока */
}
.gallery img {
width: 100%; /* ширина изображения относительно своего блока */
height: auto; /* автоматическая высота для сохранения пропорций */
transition: transform 0.5s; /* плавный переход для трансформации изображения */
}
.gallery div:hover {
flex-grow: 2; /* увеличиваем элемент, на который навели мышкой */
}
.gallery div:hover img {
transform: scale(1.1); /* увеличиваем изображение */
}
</style>
</head>
<body>
<div class="gallery">
<div><img src="image1.jpg" alt="Image 1"></div>
<div><img src="image2.jpg" alt="Image 2"></div>
<div><img src="image3.jpg" alt="Image 3"></div>
</div>
</body>
</html>
```
В этом коде:
- Каждому `div` внутри контейнера с классом `gallery` устанавливается свойство `flex` со значением `1`. Это означает, что все `div` будут иметь одинаковую ширину.
- Для `div`, на который происходит наведение указателя мыши, устанавливается `flex-grow` значение `2`, что означает, что этот `div` попытается занять в два раза больше пространства по сравнению с другими `div` внутри контейнера.
- Свойство `transition` используется для создания плавного перехода для увеличения блоков и изображений.
Обратите внимание, что значения для `flex-grow` и прочих свойств можно корректировать для достижения желаемого визуального эффекта. Также вы можете добавить медиа-запросы, чтобы адаптировать галерею для разных размеров экранов.