Saya mencoba menerapkan gradien ke rect
elemen SVG .
Saat ini, saya menggunakan fill
atribut. Di file CSS saya:
rect {
cursor: pointer;
shape-rendering: crispEdges;
fill: #a71a2e;
}
Dan rect
elemen memiliki warna isian yang benar jika dilihat di browser.
Namun, saya ingin tahu apakah saya dapat menerapkan gradien linier ke elemen ini?
css
svg
gradient
linear-gradients
Hrishikesh Choudhari
sumber
sumber
fill
dengan cara ini:fill: url(../js/gradient.svg#MyGradient);
. Apakah ini jalan yang benar?fill: linear-gradient (...)
?"fill
membutuhkan<paint>
yang dibangun di sekitar<color>
kelas CSS2 . Dengan kata lain, jawaban ini saat ini adalah satu-satunya cara untuk melakukannya melalui CSS pada saat saya menulis komentar ini. Anda perlu menambahkanlinearGradient
elemen. Terakhir, melalui w3 Working Draft untuk SVG2 , tampaknya dukungan untuklinear-gradient
aturan css isi belum dan mungkin tidak berhasil masuk ke dalam spesifikasi.gradientTransform
atributnya)Jawaban 2019
Dengan properti css baru, Anda dapat memiliki lebih banyak fleksibilitas dengan variabel alias
custom properties
Cukup atur variabel bernama untuk masing-masing
stop
dalam gradien dan kemudian sesuaikan sesuka Anda di css. Anda bahkan dapat mengubah nilainya secara dinamis dengan javascript, seperti:sumber
Membangun di atas apa yang Finesse tulis, berikut adalah cara yang lebih sederhana untuk menargetkan svg dan mengubah gradiennya.
Ini adalah hal yang perlu kamu lakukan:
Beberapa manfaat menggunakan kelas, bukan
:nth-child
adalah bahwa hal itu tidak akan terpengaruh jika Anda menyusun ulang perhentian Anda. Juga, itu membuat maksud dari setiap kelas menjadi jelas - Anda akan bertanya-tanya apakah Anda membutuhkan warna biru untuk anak pertama atau kedua.Saya telah mengujinya di semua Chrome, Firefox dan IE11:
Lihat contoh yang dapat diedit di sini: https://jsbin.com/gabuvisuhe/edit?html,css,output
sumber
Berikut adalah solusi di mana Anda dapat menambahkan gradien dan mengubah warnanya hanya dengan CSS:
sumber
Terima kasih semuanya, untuk semua balasan tepat Anda.
Menggunakan svg di shadow dom, saya menambahkan 3 gradien linier yang saya butuhkan di dalam svg, di dalam a. Saya menempatkan aturan css fill pada komponen web dan warisan od fill melakukan pekerjaan itu.
lihat pengujian saya di codepen
Yang pertama adalah SVG normal, yang kedua ada di dalam shadow dom.
sumber
Berikut adalah cara menyetel LinearGradient pada elemen target:
sumber