Saya memiliki beberapa file SVG yang menentukan width
dan height
juga viewbox
seperti ini:
<svg width="576pt" height="432pt" viewBox="0 0 576 432" > ...
tetapi bagaimana cara menampilkannya di browser dengan ukuran yang saya putuskan? Saya ingin mereka lebih kecil dan telah mencoba:
<object width="400" data="image.svg"></object>
tapi kemudian saya mendapatkan scrollbar yang terlihat.
Ia bekerja jika saya mengubah file SVG untuk set width
dan height
untuk 100%
sebaliknya, tapi saya ingin menentukan ukuran dalam HTML terlepas dari ukuran apa yang digunakan dalam file SVG. Apakah ini mungkin?
Jawaban:
Anda dapat menambahkan atribut "preservAspectRatio" dan "viewBox" ke
<svg>
tag untuk melakukannya.Buka file .svg di editor dan temukan
<svg>
tagnya. di tag tersebut, tambahkan atribut berikut:Ganti {width} dan {height} dengan beberapa default untuk viewBox. Saya menggunakan nilai dari atribut "width" dan "height" dari tag SVG dan tampaknya berhasil.
Simpan SVG dan sekarang harus berskala seperti yang diharapkan.
Saya menemukan informasi ini di sini:
https://blueprints.launchpad.net/inkscape/+spec/allow-browser-resizing
sumber
preserveAspectRatio="xMinYMin meet"
itu tidak cukup bagi saya. Saya juga perlu memberikanviewBox
seperti yang disebutkan dalam jawaban. Kasihan!preserveAspectRatio="none"
jika Anda ingin meregangkan svg dengan cara yang sewenang-wenang.100%
seperti yang dinyatakan jawaban ini .Tak satu pun dari jawaban yang diberikan di sini berhasil untuk saya ketika saya menanyakan hal ini pada tahun 2009. Karena saya sekarang memiliki masalah yang sama lagi, saya perhatikan bahwa menggunakan
<img>
tag dan lebar bersama dengan svg berfungsi dengan baik.sumber
<img>
Anda kehilangan semua interaktivitas dengan tautan, javascript, dll.<img width="400" src="image.svg"/>
.Anda dapat menjangkau ke dalam svg yang disematkan menggunakan JavaScript:
Karena svg Anda sudah memiliki viewBox, Firefox harus menskalakan lebar 576 piksel di viewBox dengan lebar 400 piksel di dokumen Anda. Svgs lain mungkin mendapat manfaat dari viewBox baru yang diturunkan dari lebar dan tinggi yang diiklankan (sering kali angka yang sama). Browser lain mungkin mendapat manfaat dari tweak svg yang berbeda.
sumber
Security error: attempted to read protected variable
img / logo.svg ...
Pengaturan ini berhasil untuk saya.
sumber
viewBox="0 0 640 80"
. Rupanya jika ini tidak ditentukan, Anda tidak dapat benar-benar menskalakannya atau membiarkan CSS menskalakannya untuk Anda dengan menggunakan misalnyawidth: 100%
dll.Saya mengalami masalah ketika iOS di iPad tidak dapat mengubah ukuran gambar SVG dengan benar dalam sebuah
<object>
tag.Gaya CSS akan menambah atau mengurangi ukuran
<object>
penampung, tetapi gambar di dalamnya tidak akan diubah (di iPad, iOS 7).Gambar SVG diekspor dari Adobe Illustrator, dan solusinya ternyata menggantikan lebar dan tinggi sebagai berikut:
dengan:
Saya perlu menggunakan
<object>
tag karena saat ini<img>
tag tidak mendukung penyematan gambar bitmap di SVG.sumber
Atur viewbox yang hilang dan isi tinggi dan lebar nilai dari atribut height dan height di tag svg
Kemudian skala gambar hanya dengan mengatur tinggi dan lebar ke nilai persen yang diinginkan . Semoga berhasil.
Anda dapat menyetel rasio aspek tetap dengan preservAspectRatio = "x200Y200 memenuhi, tetapi itu tidak perlu
misalnya
sumber
Cukup gunakan CSS untuk membuat browser mengubah ukuran SVG! Seperti:
<object style="width:30%">
Lihat http://www.vlado-do.de/svg_test/ untuk lebih jelasnya. Saya juga mencobanya secara lokal dengan SVG yang lebar dan tingginya diberikan dalam "pt". Ini bekerja dengan baik di Firefox.sumber
Biarkan melihat. Saya harus menyegarkan ingatan saya tentang SVG, saya belum banyak menggunakannya tahun ini.
Dari apa yang saya temukan hari ini, tampaknya jika Anda menentukan dimensi objek tanpa unit, mereka memiliki ukuran tetap (menurut saya dalam piksel). Jadi, tampaknya tidak ada cara untuk mengubah ukurannya saat Anda mengubah ukuran SVG (ini hanya mengubah ukuran viewport / kanvas).
Kecuali, seperti yang ditunjukkan, Anda menentukan ukuran SVG dalam persentase ATAU menentukan viewBox (mis. ViewBox = "0 0 600 500").
Sekarang, jika Anda tidak memiliki cara untuk mengubah SVG yang diekspor, Anda kurang beruntung, saya khawatir. Perpustakaan apa yang Anda gunakan?
sumber
Berikut adalah solusi PHP menggunakan QueryPath berdasarkan jawaban Jim Keller.
Setelah QueryPath dimuat, teruskan skrip svg Anda ke fungsi tersebut.
sumber