Масштабирование узора заливки в raphael.js

jQuery.contents() можно использовать с jQuery.filter для поиска всех дочерних текстовых узлов. С небольшим поворотом, вы можете найти текстовые узлы внуков, а также. Рекурсия не требуется:

$(function() {
  var $textNodes = $("#test, #test *").contents().filter(function() {
    return this.nodeType === Node.TEXT_NODE;
  });
  /*
   * for testing
   */
  $textNodes.each(function() {
    console.log(this);
  });
});
div { margin-left: 1em; }


child text 1
child text 2
grandchild text 1
grand-grandchild text 1
grandchild text 2
child text 3
child text 4

jsFiddle

6
задан sth 19 July 2009 в 01:17
поделиться

1 ответ

Заметим, что это можно сделать, используя только функции библиотеки raphael.

Когда вы применяете функцию масштабирования к объекту raphael, он создает новый узел svg с координаты масштабируются, но, к сожалению, это не меняет свойства заливки

В любом случае, когда вы добавляете атрибут «заливка» с URL-адресом, библиотека создает шаблон. Если это первый атрибут «заливки», который вы используете, этот шаблон называется raphael-pattern-0 , следующий называется raphael-pattern-1 и т. Д.)

Зная это, можно изменить атрибут шаблона в соответствии со спецификациями SVG

Вы можете получить атрибуты шаблона с помощью document.getElementById ("raphael-pattern- 0 ") и измените его свойства с помощью setAttribute Например (в зависимости от того, что вы действительно хотите сделать), это может быть что-то вроде:

var pat = document.getElementById("raphael-pattern-0");
pat.setAttribute("height", pat.getAttribute("height")*0.5);
pat.setAttribute("width", pat.getAttribute("width")*0.5);

Вы также можете изменить x , y , PatternUnits и свойства patternContentUnits .

Надеюсь, он ответит на ваш вопрос.

7
ответ дан 10 December 2019 в 00:42
поделиться
Другие вопросы по тегам:

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