Dimensionierung des SVG-ForeignObject-Elements zur Anpassung an das HTML-Element

9

Ich mache eine Visualisierung mit der D3 Javascript Bibliothek. Ich möchte Tooltips für einige Elemente der Visualisierung erstellen und mein Kunde möchte, dass sie wie "Papierschnipsel / Post-its" aussehen. Anfangs habe ich einfache DIVs für die Tooltips erstellt, wobei ich einige nette CSS-Tricks verwendet habe, um das gewünschte Aussehen zu erzeugen. (inspiriert von dieses Tutorial )

Ich würde gerne die Tooltips in das SVG foreignObject-Element kapseln, damit es besser zur Visualisierung passt und ich sie einfach manipulieren kann. (z. B. Zoomen / Panning) Meine Frage ist also: Wie bekomme ich die richtige Größe des DIV, das innerhalb des foreignObject-Elements liegt, damit ich die Größe des foreignObject-Elements genau einstellen kann? Vor allem bei Verwendung von margin / padding / shadow ....

Ich habe es mit .getBoundingClientRect () herausgefunden, aber ich weiß nicht, ob das der beste Weg ist.

Hier ist ein Code-Beispiel:

%Vor%

Hier ist ein funktionierendes jsFiddle-Beispiel: Ссылка

BEARBEITEN:

Ich habe festgestellt, dass .getBoundingClientRect () für verschiedene Shadow-Box-Einstellungen nicht funktioniert. Ich habe auch festgestellt, dass mit meiner ersten Lösung die .getBoundingClientRect () zu große Größe zurückgibt, besonders in der richtigen Größe.

Also habe ich einen anderen Weg versucht, indem ich die jQuerys .outerWidth (true) /. outerHeight (true) benutze und die Schattengröße manuell berechne. Das scheint gut zu funktionieren, aber es fühlt sich schrecklich an, so etwas zu tun.

Gibt es einen anderen Weg, um die genaue Größe eines DIV mit all seinen Komponenten zu erhalten?

Aktualisiert jsFiddle ist hier: Ссылка

    
karlitos 20.08.2013, 14:57
quelle

2 Antworten

0

Ich habe schon früher damit zu kämpfen gehabt und ich fand, dass es am einfachsten ist, sich nur auf Bootstrap's Tooltip zu verlassen .

z.

%Vor%

Es läuft darauf hinaus, title und data-content Attribute zu jedem beliebigen svg Element hinzuzufügen, an dem Sie Tootltips hinzufügen möchten. Stellen Sie dann den Inhalt gleich wie gewünscht ein. In Ihrem Fall wäre also html

%Vor%

Verwandte:

Wie zeige ich einen Bootstrap-Tooltip mit einem SVG-Objekt; Frage zu Stack Overflow

Bootstrap-Tooltips

Mein super kurzer Blogbeitrag

    
adilapapaya 26.05.2014 20:17
quelle
0
___ tag123html ___ HTML (Hyper Text Markup Language) ist die Standard-Auszeichnungssprache, die zum Strukturieren von Webseiten und zum Formatieren von Inhalt verwendet wird. HTML beschreibt die Struktur einer Website semantisch zusammen mit Hinweisen für die Präsentation, wodurch sie eine Markup-Sprache statt einer Programmiersprache wird. Die neueste Revision der HTML-Spezifikation ist HTML5.2. ___ tag123svg ___ Scalable Vector Graphics (SVG) ist ein XML-basiertes zweidimensionales Vektorgrafikformat, das auch in HTML verwendet werden kann. Fügen Sie dieses Tag nicht hinzu, nur weil Ihr Projekt SVG verwendet. Fügen Sie stattdessen das Tag hinzu, wenn Ihre Frage entweder SVG betrifft oder eng damit verbunden ist, wie Sie etwas mit SVG erreichen können. ___ antwort43345261 ___

Sie müssen es nicht auf und ab skalieren. Es gibt keinen wirklichen Nutzen davon, oder? Dann können Sie foreignObject height und width auf 1 setzen und über CSS foreignObject { overflow: visible; } setzen.

    
___ tag123d3js ___ Für Fragen zu D3.js selbst oder zu einem der vielen vorhandenen Plugins / Module. Außerdem, wenn Hilfe beim Erstellen von Visualisierungen mit D3.js benötigt wird. ___ qstntxt ___

Ich mache eine Visualisierung mit der D3 Javascript Bibliothek. Ich möchte Tooltips für einige Elemente der Visualisierung erstellen und mein Kunde möchte, dass sie wie "Papierschnipsel / Post-its" aussehen. Anfangs habe ich einfache DIVs für die Tooltips erstellt, wobei ich einige nette CSS-Tricks verwendet habe, um das gewünschte Aussehen zu erzeugen. (inspiriert von dieses Tutorial )

Ich würde gerne die Tooltips in das SVG foreignObject-Element kapseln, damit es besser zur Visualisierung passt und ich sie einfach manipulieren kann. (z. B. Zoomen / Panning) Meine Frage ist also: Wie bekomme ich die richtige Größe des DIV, das innerhalb des foreignObject-Elements liegt, damit ich die Größe des foreignObject-Elements genau einstellen kann? Vor allem bei Verwendung von margin / padding / shadow ....

Ich habe es mit .getBoundingClientRect () herausgefunden, aber ich weiß nicht, ob das der beste Weg ist.

Hier ist ein Code-Beispiel:

%Vor%

Hier ist ein funktionierendes jsFiddle-Beispiel: Ссылка

BEARBEITEN:

Ich habe festgestellt, dass .getBoundingClientRect () für verschiedene Shadow-Box-Einstellungen nicht funktioniert. Ich habe auch festgestellt, dass mit meiner ersten Lösung die .getBoundingClientRect () zu große Größe zurückgibt, besonders in der richtigen Größe.

Also habe ich einen anderen Weg versucht, indem ich die jQuerys .outerWidth (true) /. outerHeight (true) benutze und die Schattengröße manuell berechne. Das scheint gut zu funktionieren, aber es fühlt sich schrecklich an, so etwas zu tun.

Gibt es einen anderen Weg, um die genaue Größe eines DIV mit all seinen Komponenten zu erhalten?

Aktualisiert jsFiddle ist hier: Ссылка

    
___ tag123size ___ Die Größe beim Berechnen kann sich auf verschiedene Dimensionen beziehen: Größe in Bits, in Bytes, in Pixeln, im Speicher, auf Speicherplatz usw. Bitte verwenden Sie dieses Tag nicht in Ihren Posts - es ist zu allgemein, um Ihre Frage sinnvoll zu kategorisieren . ___ qstnhdr ___ Dimensionierung des SVG-ForeignObject-Elements zur Anpassung an das HTML-Element ___ answer23877153 ___

Ich habe schon früher damit zu kämpfen gehabt und ich fand, dass es am einfachsten ist, sich nur auf Bootstrap's Tooltip zu verlassen .

z.

%Vor%

Es läuft darauf hinaus, %code% und %code% Attribute zu jedem beliebigen svg Element hinzuzufügen, an dem Sie Tootltips hinzufügen möchten. Stellen Sie dann den Inhalt gleich wie gewünscht ein. In Ihrem Fall wäre also %code%

%Vor%

Verwandte:

Wie zeige ich einen Bootstrap-Tooltip mit einem SVG-Objekt; Frage zu Stack Overflow

Bootstrap-Tooltips

Mein super kurzer Blogbeitrag

    
___
mahish 11.04.2017 11:58
quelle

Tags und Links