2009-12-29 7 views

Antwort

38

Sie können die getBBox() - Methode des SVGElement-Objekts verwenden. Er gibt Ihnen die Breite und Höhe, den x- und y-Versatz in Pixeln an, ohne die Skalierung des Elements zu berücksichtigen.

document.getElementById('myelem').getBBox().width 
document.getElementById('myelem').getBBox().height 

sind, was Sie suchen, denke ich. vor kurzem habe auch gelernt, dass die wenig bekannten getBoundingClientRect() Werke sowie

  1. Ich habe:

    EDIT! Sie können auch tun: var el = document.getElementById('myelem'); var mywidth = el.getBoundingClientRect().width;

  2. Beachten Sie, dass es einen Unterschied zwischen getBBox und getBoundingClientRect gibt. getBBox erhält die ursprünglichen Abmessungen - getBoundingClientRect respektiert auch die Transformationen getan mit Skala usw.

+1

+1 für die Bearbeitung. –

+5

'getBBox' gibt '{[..], width: 0, height: 0}' zurück, also auch' getBoundingClientRect'. Letzteres funktioniert nicht nur in FireFox. – Gajus

+0

Umwickeln Sie Ihr Element nicht mit jQuery (wie $ (yourElement)), da getBBox dann keine Funktion ist. – Cedric

-3

SVGs sind skalierbar Vektorgrafiken, und können daher jede beliebige Höhe und Breite haben. Nur das Verhältnis ist durch das Format festgelegt.

+0

Vielen Dank, ich weiß, das ist, aber in der SVG Viever Widget i machen (http://my.opera.com /SpShut/blog/show.dml/5803641) Ich muss Thumbnails von SVG-Dateien anzeigen (sagen wir 100x100), und wenn eine Datei weder width/height noch viewBox-Attribute hat, wird sie bei * einiger Größe * und nur 100x100 Teilen angezeigt ist sichtbar. Ich möchte die Datei irgendwie verarbeiten, um die Dimensionen zu erhalten und Breite/Höhe und ViewBox-Attribute einzustellen. –

+0

Sie müssen dann eine Annahme darüber machen. Wenn deine Daumen 100x100 sind, dann zeige das SVG auf 100x100 an. – jball

+0

Ich setze und wenn die file.svg keine Breite & Höhe hat & viewBox nur 100x100 Teile wenn es angezeigt wird. Ich möchte die Größe von Grafiken bestimmen, die Attribute festlegen und die Datei auf der Festplatte neu schreiben, so dass eine Annahme nicht reicht. Irgendwelche Ideen wie man das macht? –

Verwandte Themen