Saya ingin menempatkan beberapa gambar SVG sebelum beberapa elemen yang dipilih. Saya menggunakan jQuery tapi itu tidak relevan.
Saya ingin memiliki :before
elemen sebagai:
#mydiv:before {
content: '<svg.. code here</svg>';
display: block;
width: 22px;
height: 10px;
margin: 10px 5px 0 10px;
}
Jika saya melakukannya seperti yang ditunjukkan di atas, itu hanya menampilkan string. Saya memeriksa spesifikasi dan tampaknya ada beberapa batasan pada konten apa yang bisa. Apakah ada batasan untuk pembatasan ini? Hanya konten css yang relevan dengan pertanyaan saya.
Jawaban:
Ya kamu bisa! Baru saja menguji ini dan berfungsi dengan baik, ini luar biasa! Masih tidak bekerja dengan html, tetapi tidak dengan svg.
Di index.html saya, saya punya:
Dan test.svg saya terlihat seperti ini:
sumber
content: url(path/to/my.svg)
. Itu tidak berarti itu akan bekerja dengan pustaka tooltips UI jQuery, meskipun.content: url(mysprite.svg#my-icon)
tidak akan benar-benar menarik ikon Anda. saya ingin terbukti salah, :)Iya. Anda dapat menambahkan SVG sebagai gambar latar belakang yang kosong: setelah atau: sebelumnya. Ini dia:
sumber
background-size
itu tidak didukung di Opera Mini. Ini sangat membuat frustrasi.<?xml version="1.0" encoding="utf-8"?>
ke awal file svg saya untuk membuatnya berfungsi.pastikan svg Anda tidak mengandung tanda kutip ganda, dan uriencode simbol # apa pun.
sumber
url('file.svg')
Namun bekerja.xmlns='http://www.w3.org/2000/svg'
bagian <svg> agar berfungsi di Chrome 66.x. Misalnya - chevron kecil akan menjadi:content:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24px' height='24px' fill='white'><path d='M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z' /></svg>");
Memanfaatkan sprite CSS dan data uri memberikan manfaat ekstra menarik seperti pemuatan cepat dan lebih sedikit permintaan DAN kami mendapatkan dukungan IE8 dengan menggunakan image / base64:
Sampel codepen menggunakan SVG
HTML
CSS
Untuk IE8, ubah ke ini:
sumber
scale svg
dan Anda akan menemukan banyak caraAlat yang mudah digunakan untuk SVG encoding url-encoder
sumber
Hati-hati semua jawaban lain memiliki beberapa masalah di IE.
Mari kita situasi ini - tombol dengan ikon prepended. Semua browser menangani ini dengan benar, tetapi IE mengambil lebar elemen dan menskala konten sebelumnya agar sesuai. JSFiddle
Solusi adalah mengatur ukuran sebelum elemen dan membiarkannya di tempatnya:
The
background-image
+background-size
solusi bekerja dengan baik, tapi sedikit unhandy, karena Anda harus menentukan ukuran yang sama dua kali.Hasilnya di IE11:
sumber
Untuk memperluas topik ini lebih jauh. Jika Anda ingin menambahkan ikon Font Awesome 5 Anda perlu menambahkan beberapa CSS tambahan.
Ikon secara default memiliki kelas
svg-inline--fa
danfa-w-*
.Ada juga kelas pengubah seperti
fa-lg
,fa-rotate-*
dan lainnya. Anda perlu memeriksasvg-with-js.css
file dan menemukan CSS yang tepat untuk itu.Anda perlu menambahkan warna Anda sendiri ke ikon css jika tidak maka akan menjadi hitam secara default, misalnya di
fill='%23f00'
mana%23
dikodekan#
.sumber
sumber