https://en.wikipedia.org/wiki/UV_mapping
Значения UV-сопоставления варьируются от 0
до 1
включительно и представляют процентное сопоставление для вашего изображения текстуры.
Вы используете отношение размера div к размеру окна, которое, вероятно, намного меньше, чем 1
, и приведет к эффекту "увеличения", который вы видите.
Например, если ваши w
и h
приводят к значению 0.5
, тогда самый дальний верхний правый угол отображаемой текстуры будет точным центром изображения.
background-style: cover
Масштабирует изображение как можно больше, не растягивая его. Если пропорции изображения отличаются от элемента, оно обрезается либо по вертикали, либо по горизонтали, чтобы не осталось пустого места.
Другими словами, оно будет масштабировать изображение в зависимости от размера короткой стороны и обрезать остальное. Итак, давайте предположим, что у вас есть хорошее 128x512
изображение и 64x64
пространство. cover
уменьшит ширину 128
до 64
(коэффициент масштабирования 0.5
), поэтому умножьте 512
на 0.5
, чтобы получить новую высоту (128
). Теперь ваш w
все равно будет 1
, но ваш h
будет 128 / 512 = 0.25
. Ваша текстура теперь будет соответствовать ширине и обрезать высоту.
Вам нужно будет выполнить этот расчет для каждого отношения размера изображения к контейнеру, чтобы найти подходящие UV, учитывая, что масштабирование всегда относится к короткой стороне.