Да, вы можете использовать CSS препроцессоры, такие как LESS или SASS, чтобы делать стили более динамичными и сокращать количество классов, которые вам нужно прописывать вручную.
Для извлечения данных о пропорциях из имени CSS-класса можно использовать JavaScript. Давайте рассмотрим, как это можно сделать.
1. **HTML разметка**:
У вас должно быть что-то вроде этого:
```html
<div class="aspect-16x9-4x3">
<img src="image1.jpg" class="img-1" />
<img src="image2.jpg" class="img-2" />
</div>
```
2. **JavaScript для извлечения пропорций**:
Теперь мы можем написать функцию на JavaScript, которая будет извлекать пропорции из имени класса:
```javascript
document.querySelectorAll('.aspect-*').forEach(container => {
const className = container.className; // Получаем имя класса
const regex = /aspect-(\d+)x(\d+)-(\d+)x(\d+)/; // Регулярное выражение для извлечения пропорций
const matches = className.match(regex);
if (matches) {
const width1 = parseInt(matches[1], 10);
const height1 = parseInt(matches[2], 10);
const width2 = parseInt(matches[3], 10);
const height2 = parseInt(matches[4], 10);
// Вычисляем общий размер и пропорции для изображений
const totalWidth = width1 + width2;
const totalHeight = Math.max(height1, height2);
// Устанавливаем размеры для изображений
const img1 = container.querySelector('.img-1');
const img2 = container.querySelector('.img-2');
img1.style.width = `${(width1 / totalWidth) * 100}%`;
img1.style.height = 'auto';
img2.style.width = `${(width2 / totalWidth) * 100}%`;
img2.style.height = 'auto';
// Optional: Устанавливаем высоту для родительского контейнера
container.style.height = `${totalHeight}px`;
}
});
```
3. **LESS для стилизации**:
При использовании LESS вы можете задать стили для изображений, используя переменные, но без JavaScript это будет гораздо сложнее адаптировать динамически. С LESS вы могли бы, например:
```less
.img-1 {
height: auto;
}
.img-2 {
height: auto;
}
```
Но более динамическое решение с вычислениями пропорций требует JavaScript, как показано выше.
Таким образом, с использованием JavaScript вы можете легко настраивать размеры изображений в зависимости от пропорций, указанных в имени CSS-класса, что поможет избежать создания множества отдельных классов для каждой пары изображений.