Существует только один метод, который подпадает под ваши условия (самый сложный - необходимость повторить): использование border-image
.
Игра с демо: http://dabblet.com/gist/1635890
Суть в том, что вы можете пометить часть, которую хотите использовать, используя border-image-slice часть свойства border-image
. Синтаксис немного хитрый, но используя его, вы можете создавать различные повторяющиеся паттерны из border-изображений. Кроме того, когда необходимые детали не на краю или когда вам нужно повторить изображение как по X, так и по Y, вам понадобится свойство clip
, поэтому вам понадобится блок для абсолютного позиционирования. Все это работает даже в Opera.
Но есть одна плохая, плохая вещь: рендеринг центральной части border-image - это адский ад: есть разница не только между webkit и mozilla, но даже между Safari и Chrome, поэтому я добавил там много хаков.
В заключение: цель может быть достигнута, но с чертовым взломом.
Итак, я бы посоветовал вам использовать данные: uri, потому что в webkits и Fx нет других способов сделать это (только в Fx вы можете использовать -moz-image-rect
, как упомянуто выше).