Pracuję nad niektóre ECMAScript/JavaScript dla pliku SVG i trzeba uzyskać width
i height
elementu text
, dzięki czemu można zmienić rozmiar prostokąta, który go otacza. W HTMLu będę mógł używać atrybutów offsetWidth
i offsetHeight
na elemencie, ale wydaje się, że te właściwości są niedostępne.SVG uzyskać szerokość elementu tekstowego
Oto fragment, że muszę pracować. Potrzebuję zmienić szerokość prostokąta za każdym razem, gdy zmieniam tekst, ale nie wiem, jak uzyskać rzeczywisty width
(w pikselach) elementu text
.
<rect x="100" y="100" width="100" height="100" />
<text>Some Text</text>
Wszelkie pomysły?
Dzięki. Znalazłem także inną funkcję, która mogła pomóc w szerokości. textElement.getComputedTextLength(). Wypróbuję oba dziś wieczorem i zobaczę, które działa lepiej dla mnie. – spudly
Grałem z tymi w zeszłym tygodniu; Metoda getComputedTextLength() zwróciła ten sam wynik co getBBox(). width dla rzeczy, na których go wypróbowałem, więc po prostu wybrałem ramkę ograniczającą, ponieważ potrzebowałem zarówno szerokości jak i wysokości. Nie jestem pewien, czy istnieją jakiekolwiek okoliczności, gdy długość tekstu byłaby inna niż szerokość: myślę, że być może ta metoda jest dostarczana, aby pomóc w układaniu tekstu, na przykład dzieleniu tekstu na wiele linii, podczas gdy ramka ograniczająca jest dostępną ogólną metodą na wszystkich (?) elementach. – NickFitz
Link do 'getBBox()' został przeniesiony na http://wiki.svg.org/index.php/GetBBox – RobM