Вот более актуальный подход (старый ответ был с июня 2011 года). Все основные браузеры теперь поддерживают несколько фоновых изображений.
С несколькими фоновыми изображениями и вычислениями CSS вы можете повторять-y только с той стороны, которая вам нужна. Итак, вот что вы можете сделать:
.full-width-container{
background-image:
url('some_long_image_600Wx100H.jpg'),
url('some_long_image_600Wx100H.jpg');
background-position:
calc(50% + (600px * 0.5)) 0;
calc(50% + (600px * 1.5)) 0,
;
background-repeat: repeat-y;
}
Примечание: 600px - это ширина изображения. Приведенный выше пример будет охватывать экран с разрешением 1200 пикселей или левую половину монитора шириной 2400 пикселей.
В идеале у вас достаточно широкое изображение, поэтому вам не нужно иметь слишком много повторно используемых фоновых изображений. Если бы у вас было изображение шириной всего 300 пикселей, оно выглядело бы так:
.full-width-container{
background-image:
url('some_long_image_300Wx100H.jpg'),
url('some_long_image_300Wx100H.jpg'),
url('some_long_image_300Wx100H.jpg'),
url('some_long_image_300Wx100H.jpg');
background-position:
calc(50% + (600px * 0.5)) 0;
calc(50% + (600px * 1.5)) 0,
calc(50% + (600px * 2.5)) 0,
calc(50% + (600px * 3.5)) 0,
;
background-repeat: repeat-y;
}
Я также не уверен, как нагрузка на несколько кадров, даже с одним и тем же изображением, повлияет на частоту кадров. Я предполагаю, что это будет минимальным.