Вышеуказанное с clip-rect
работает только для прямоугольников - если вам нужно установить смещение положения фона для path
, есть относительно простой способ:
- Сделатьзаполнить позицию относительно фигуры (иначе все запутается)
- Добавьте дополнительный сегмент
M
с двумя координатами в начале строки пути.Это меняет точку, которая считается началом пути, и, следовательно, меняет положение, с которого начинается изображение.
Итак, представьте, что у вас был путь треугольника, определенный как M0,0 50,0 25,35Z
.Если вы хотите сместить фоновое изображение влево на 20 пикселей и выше на 5 пикселей, добавьте M-20,-5
к началу строки, получив M-20,-5 M0,0 50,0 25,35Z
.
Вот демонстрация именно этого:
Обратите внимание, что фактическое смещение фона будет разницей между значениями, которые вы вводите, и верхним левым ограничивающим прямоугольником пути в момент применения заливки.Если при определении исходного пути вы можете быть уверены, что это 0,0
, тогда жизнь станет проще.
Если вы думаете о , определяющем функцию или пользовательский атрибут, который применяет положение фона на лету - например, используя element.getBBox () чтобы противостоять вышеупомянутой проблеме - имейте в виду, что в режиме VML есть ошибка, которая означает, что в IE8 любые дополнительные M сегменты удаляются из пути, если вы обновляете путь, используя .attr('path')
.
Кроме того, в режиме SVG вам необходимо обновить заливку, что может означать, что вам необходимо повторно исправить относительное положение .
Вот демонстрация пользовательского атрибутаработая для вышеупомянутого во всем, кроме IE8 - щелкните форму, чтобы обновить положение фона - с некоторыми неудачными попытками заставить его работать в IE8 ... http://jsbin.com/oxuyeq/13/edit