ruskar
@ruskar
Conflict Intelligence Team

Background-position и относительные величины

Есть на HTML-странице div, у которого фоном задана большая картинка. Для div'a (далее буду называть его контейнером) заданы размеры: height 100%, width 100%, а также установлено свойство overflow: hidden (т.е. всё, что не помещается в контейнер, скрывается).

Фоновая картинка имеет разрешение 1280х1024px, контейнер получает размер ~1024px (поскольку у него задано 100% от размера браузерного окна, которое, в свою очередь, имеет размер 1024px).

При загрузке страницы я запускаю таймер на 5 секунд, после окончания которого, хочу сделать следующее: контейнер должен плавно уехать вправо за экран. Движение контейнера (в действительности только его фона) реализую по следующему алгоритму: каждые 50 миллисекунд изменяю свойство background-position, отнимая у первого его значения (left) по одному проценту, пока оно не станет равным -100% (точнее в «полном» виде: -100% 0%).

Логически рассуждая, я предполагаю, что такое изменение приведёт к тому, что картинка полностью уедет вправо, исчезнув за границами контейнера.

Как оно выходит на самом деле?



В действительности картинка доезжает только до примерно 1/3 ширины контейнера (напомню, что картинка имеет ширину 1280px, а контейнер 100% = 1024px). Странно, да?
Если же мы жёстко зададим контейнеру ширину как у картинки (1280px), то background-position вообще никак не влияет на расположение фона (хоть -100%, хоть -50%, хоть -300%).
Если же мы жёстко зададим размер контейнеру меньше ширины картинки, то направление движения меняется в противоположную сторону.

Где тут логика?

background-position: -100% 0%

— здесь -100% — это 100% от чего? Размера контейнера? Размера фонового изображения? Размера окна браузера? И почему -100%, как правило равно примерно 30% ширины контейнера, и 20% ширины фонового изображения?

Пример смотрим тут
  • Вопрос задан
  • 3090 просмотров
Пригласить эксперта
Ответы на вопрос 1
medved13
@medved13
Ведущий front-end разработчик
Вот вся статья: oooportal.ru/?cat=article&id=322
Приведу ответ на ваш вопрос:
Правило предусматривает, что точка, находящаяся вне границ изображения, определяемая значением –10% –10%, должна быть выровнена с аналогичной точкой абзаца.

Т.е. в вашем случае при -100% между собой равняются точки -1280 и -1024. И как раз получается смещение на треть (скорее даже на четверть).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы