SVG D3: отображать элемент только внутри определенной группы или определенного SVG

Есть ли способ отобразить элемент D3 только в определенной группе?

Допустим, у меня есть 2 прямоугольных элемента, расположенных бок о бок в SVG. И я хочу показать круг только внутри первого прямоугольника. Если круг переместился во вторую позицию прямоугольного элемента, круг не должен отображаться поверх второго прямоугольника.

Этого можно достичь, используя элемент SVG внутри элемента SVG, как показано ниже:

<svg id = "outer">
  <svg id = "inner1">
  </svg>
  <svg id = "inner2">
  </svg>
</svg>

То же самое можно увидеть по следующей ссылке: https://hitokun-s.github.io/old/demo/path-between-two-svg.html

Но если я использую это так, я не смогу стилизовать внутренние SVG.

заранее спасибо

«Но если я использую это так, я не смогу стилизовать внутренние SVG». Я не понимаю этого предложения. Что тебе мешает?

ccprog 05.06.2018 18:00

Это возможно при использовании 3 viewBoxes.

Alexander 05.06.2018 18:02

@ccprog Я имел в виду, если я использую внутренние и внешние SVG. Я не хочу добавлять границу к внутреннему SVG. Надеюсь, это проясняет.

Nishan Fernando 05.06.2018 18:25

@Alexander: Да, с viewBox можно иметь SVG внутри SVG. Но я не могу стилизовать внутренний SVG. Я хочу добавить границу к внутреннему SVG.

Nishan Fernando 05.06.2018 18:33

SVG не имеет границ. Просто используйте <rect> с обводкой и без заливки, чтобы смоделировать ее.

Alexander 05.06.2018 19:04

Привет, @Alexander, SVG может иметь границы. См. Ссылку, которую я привел в примере. Дело не только в границе. У меня не может быть никаких стилей (например, background-color, border, fill) во «внутреннем» SVG. "Внешний" SVG принимает любой стиль.

Nishan Fernando 05.06.2018 20:35

Используйте инструменты разработки браузера для вышеупомянутого примера, и вы увидите, что прямоугольники используются для имитации границ для внутренних <svg>.

Alexander 06.06.2018 03:55

Спасибо @Alexander, да, прямоугольник используется для добавления границы. Для моего решения мне придется использовать вложенные SVG, а затем использовать прямоугольники для стилизации.

Nishan Fernando 06.06.2018 04:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
79
1

Ответы 1

Ответ на мой вопрос после нескольких часов поисков.

Этого можно достичь, разместив «внутренний» SVG внутри элемента div.

<svg id = "outer">
  <foreignObject>
    <div>
      <svg id = "inner" style = "border-radius: 20px; border: 1px solid red;">
      </svg>
    </div>                
  </foreignObject>
</svg

Элемент Div может быть помещен в svg с помощью элемента foreignObject. Тогда «внутренний» SVG рассматривается как «внешний» элемент, и к нему можно применить стили.

Надеюсь, это поможет любой другой бедной душе.

Другие вопросы по теме