Apakah mungkin untuk mengatur drop shadow untuk elemen svg menggunakan css3, sesuatu seperti
box-shadow: -5px -5px 5px #888;
-webkit-box-shadow: -5px -5px 5px #888;
Saya melihat beberapa komentar tentang membuat bayangan menggunakan efek filter. Apakah ada contoh menggunakan css saja. Di bawah ini adalah kode yang berfungsi di mana gaya cusor diterapkan dengan benar, tetapi tidak ada efek bayangan. Tolong bantu saya untuk mendapatkan efek bayangan dengan sedikit kode.
svg .shadow {
cursor:crosshair;
-moz-box-shadow: -5px -5px 5px #888;
-webkit-box-shadow: -5px -5px 5px #888;
box-shadow: -5px -5px 5px #888;
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" viewBox="0 0 120 70">
<rect class="shadow" x="10" y="10" width="100" height="50" fill="#c66" />
</svg>
sumber
slope
atribut untuk menyesuaikan berapa banyak opacity yang Anda inginkan.Gunakan properti CSS
barufilter
.Didukung oleh browser webkit , Firefox 34+ dan Edge .
Anda dapat menggunakan polyfill ini yang akan mendukung FF <34, IE6 +.
Anda akan menggunakannya seperti ini:
Pendekatan ini berbeda dari
box-shadow
efek karena opacity dan tidak menerapkan efek drop shadow ke kotak tetapi lebih ke sudut-sudut elemen svg itu sendiri.Harap Dicatat : Pendekatan ini hanya berfungsi ketika kelas ditempatkan pada
<svg>
elemen saja. Anda TIDAK dapat menggunakan ini pada elemen svg sebaris seperti<rect>
.Baca lebih lanjut tentang filter css di html5rocks .
sumber
Anda dapat dengan mudah menambahkan efek drop-shadow ke elemen svg menggunakan fungsi drop-shadow () CSS dan nilai warna rgba. Dengan menggunakan nilai warna rgba Anda dapat mengubah opacity bayangan Anda.
sumber
Cara termudah yang saya temukan adalah dengan
feDropShadow
. Saya tidak akan pernah kembali menggunakan nama tag filter yang sangat esoteris yang tidak saya mengerti.sumber
filter:url(#shadow)
ke elemen yang Anda ingin memiliki bayangan (#shadow
adalah id darifilter
tag). Sebagai contoh<path d="..." style="filter:url(#shadow)"/>
. Mungkin Anda harus menambahkannya ke jawaban Anda.Saya tidak mengetahui solusi khusus CSS.
Seperti yang Anda sebutkan, filter adalah pendekatan kanonik untuk membuat efek drop shadow di SVG. Spesifikasi SVG termasuk contohnya.
sumber
-webkit-filter: drop-shadow()
adalah cara untuk pergi pasti. Lihat jawabannya oleh @hitautodestruct.Removed: Filter Effects This chapter is no longer part of the SVG specification
!!Teks hitam dengan bayangan putih
Cara lain, saya gunakan untuk bayangan putih (pada teks): membuat klon untuk bayangan:
Catatan : Ini diperlukan
xmlns:xlink="http://www.w3.org/1999/xlink"
pada deklarasi SVG.Nilai teks asli terletak di
<defs>
bagian, dengan posisi dan gaya, tetapi tanpafill
definisi.Teks dikloning dua kali: pertama untuk bayangan dan kedua untuk teks itu sendiri.
Bayangan yang lebih jauh dengan nilai terbesar sebagai penyimpangan blur :
Anda bisa menggunakan pendekatan yang sama dengan objek SVG biasa.
Dengan persyaratan yang sama: Tidak ada definisi isi di
<defs>
bagian !sumber
flood-color
?Blur
digunakan untuk membuat bayangan tampak sedikit kabur. Lihat versi teks kedua sayaMore distant shadow...
(Baru ditambahkan sekarang)Mungkin sebuah evolusi, tampaknya filter inline css bekerja dengan baik pada elemen, dengan cara tertentu.
Mendeklarasikan drop-shadow css filter, dalam elemen svg, di kelas atau inline TIDAK bekerja, seperti yang ditentukan sebelumnya.
Tapi, setidaknya di Firefox, dengan sihir berikut:
Menambahkan inline deklarasi filter , dengan javascript, setelah memuat DOM .
sumber