Вложенные системы координат. Сущность SVG. J. David Eisenberg

Вложенные системы координат ...

Дата публикации: 21.11.2010

Вы можете создать новую область просмотра со своей системой координат в любое время, вложив еще один элемент <svg> элемент в Ваш SVG-документ. Создается эффект «мини-холста», поверх которого Вы можете рисовать. Мы использовали данную технику для создания этой иллюстрации:

пример использования вложенных систем координат

Вместо того, чтобы рисовать прямоугольники, потом изменять масштаб и положение кота внутри каждого из них (грубый метод), мы предпринимаем следующие действия:

  • рисуем голубые прямоугольники на основном холсте;
  • для каждого прямоугольника определяем новый элемент <svg> с соответствующим атрибутом preserveAspectRatio;
  • рисуем кота на новых холстах (применяем <use>) и пусть SVG делает всю тяжелую работу.

На более простом примере разберем как можно применить вложенные <svg>. Нарисуем две фигуры: круг и прямоугольник на основном холсте. И добавим новый холст, который будет расположен внутри прямоугольника.

пример использования вложенных систем координат

Сначала создаем SVG для основной системы координат и для круга. Обратите, внимание, что пользовательская система координат совпадает с основной:

<svg width="200" height="200" viewBox="0 0 200 200">
	<circle cx="25" cy="25" r="25" style="stroke: black; fill: none;" />
</svg>
круг

Теперь рисуем границы, которыми обозначим, где будет новое окно просмотра:

<svg width="200" height="200" viewBox="0 0 200 200">
	<circle cx="25" cy="25" r="25" style="stroke: black; fill: none;" />
	<rect x="100" y="5" width="30" height="80" style="stroke: blue; fill: none;" />
</svg>
круг и контур для нового холста

Сейчас, добавляем еще один элемент <svg> для новой области просмотра. Вдобавок к определению viewBox, width, height и preserveAspectRatio, Вы можете также определить атрибуты х и у. Это будут координаты положения нового холста относительно родительского <svg> элемента. По умолчанию они равны нулю.

<svg width="200" height="200" viewBox="0 0 200 200">
	<circle cx="25" cy="25" r="25" style="stroke: black; fill: none;" />
	<rect x="100" y="5" width="30" height="80" style="stroke: blue; fill: none;" />
	<svg x="100px" y="5px" width="30px" height="80px" viewBox="0 0 50 50" preserveAspectRatio="xMaxYMax meet">
	</svg>
</svg>

Новая система координат вложенного <svg> позволит добавить круг точно в прямоугольник без изменений кода для круга:

<svg width="200" height="200" viewBox="0 0 200 200">
	<circle cx="25" cy="25" r="25" style="stroke: black; fill: none;" />
	<rect x="100" y="5" width="30" height="80" style="stroke: blue; fill: none;" />
	<svg x="100px" y="5px" width="30px" height="80px" viewBox="0 0 50 50" preserveAspectRatio="xMaxYMax meet">
		<circle cx="25" cy="25" r="25" style="stroke: black; fill: none;"/>
	</svg>
</svg>

Куда дальше

Показать комментарии

Смотрите также в этом разделе

Смежные материалы, которые могут быть вам полезны

  • Paths. Moveto, lineto, и closepath
  • Группирование и привязка SVG объектов
  • Координаты. Сущность SVG. J. David Eisenberg
  • Масштабируемость. Сущность SVG. J. David Eisenberg
  • Начнем. Сущность SVG. J. David Eisenberg
  • О книге и переводе
  • Основные фигуры. Круги и эллипсы. Сущность SVG. J. David Eisenberg
  • Основные фигуры. Линии. Сущность SVG. J. David Eisenberg
  • Основные фигуры. Ломанная линия. Сущность SVG. J. David Eisenberg
  • Основные фигуры. Многоугольник. Сущность SVG. J. David Eisenberg
  • Основные фигуры. Прямоугольники. Сущность SVG. J. David Eisenberg
  • Последовательность трансформаций в SVG
  • Прием: конвертация из декартовой системы координат
  • Прием: масштабирование вокруг точки
  • Содержание. Сущность SVG. J. David Eisenberg
  • Создание SVG графики. Сущность SVG. J. David Eisenberg
  • Сокращение путей. Сущность SVG. J. David Eisenberg
  • Сохранение пропорций. Сущность SVG. J. David Eisenberg
  • Структура SVG документа и представление
  • Сущность SVG. J. David Eisenberg
  • Трансформации skewX и skewY
  • Трансформация в SVG: масштабирование
  • Трансформация в SVG: перемещение
  • Трансформация в SVG: поворот