


Gunakan fungsi drop-shadow() penapis CSS dengan bijak untuk mencipta kesan cahaya dan bayang garis
Artikel ini akan memperkenalkan drop-shadow()
yang menggunakan penapis CSS untuk menambah kesan bayang pada bahagian elemen HTML dan elemen SVG untuk mencapai kesan cahaya dan bayang yang sejuk, yang boleh digunakan dalam pelbagai senario.
Melalui artikel ini, anda boleh belajar:
Cara menggunakan
filter: drop-shadow()
untuk menambah elemen tunggal pada bahagian daripada kandungan elemen Beri perhatian kepada berbilang bayang dan gunakan berbilang bayang untuk mencapai kesan Neonelemen HTML dengan
filter: drop-shadow()
dan elemen SVG denganfilter: drop-shadow()
untuk menjana cahaya dan bayang kesan
Cahaya garisan dan bayang-bayang Animasi neon dilaksanakan menggunakan WebGL
Pada suatu hari semasa menyemak imbas CodePen, saya mendapati kesan cahaya dan bayang garisan yang sangat menarik dilaksanakan menggunakan WebGL - NEON LOVE, Sangat menarik:
Tetapi memandangkan kod sumber dilengkapkan menggunakan WebGL, lukisan kesan yang begitu mudah memerlukan hampir 300 baris kod seperti GLSL shader .
Jadi, bolehkah kita mencapainya menggunakan HTML(SVG) CSS?
Gunakan bayang-bayang jatuh untuk menambah bayang-bayang tunggal dan berbilang pada sebahagian daripada kandungan elemen
Pertama sekali, untuk mencapai kesan di atas, langkah yang sangat penting ialah menambah bayang-bayang pada sebahagian daripada kandungan unsur.
Andaikan kita mempunyai grafik seperti ini:
<div></div>
Kami menetapkan border-radius: 50%
pada grafik div ini dan menambah border-top
:
div { width: 200px; height: 200px; border-top: 5px solid #000; border-radius: 50%; }
Hasilnya adalah seperti berikut :
Jika saya ingin menambah bayang pada arka ini, cuba gunakan box-shadow
:
div { width: 200px; height: 200px; border-top: 5px solid #000; border-radius: 50%; + box-shadow: 0 0 5px #000; }
emm, jelas sekali tidak akan berfungsi , bayang akan ditambahkan pada keseluruhan div:
Untuk menyelesaikan situasi ini, pelajar pintar akan serta-merta memikirkan filter: drop-shadow()
, yang dilahirkan untuk menyelesaikan masalah ini, mencipta bayang segi empat tepat di belakang keseluruhan kotak elemen, manakala penapis box-shadow
mencipta bayang-bayang yang mematuhi bentuk imej itu sendiri (saluran alfa). drop-shadow()
dengan drop-shadow()
: box-shadow
div { width: 200px; height: 200px; border-top: 5px solid #000; border-radius: 50%; - box-shadow: 0 0 5px #000; + filter: drop-shadow(0 0 5px #000); }Dengan cara ini kita mendapat bayang yang sesuai dengan bentuk imej itu sendiri (saluran alfa):
juga boleh digunakan beberapa kali pada imej untuk mencapai berbilang kesan bayang-bayang yang serupa dengan bayang-bayang: drop-shadow()
div { ... filter: drop-shadow(0 0 2px #000) drop-shadow(0 0 5px #000) drop-shadow(0 0 10px #000) drop-shadow(0 0 20px #000); }Kami akan mendapat berbilang bayang-bayang tindanan bahagian corak yang kelihatan Kesan:
Demo CodePen -- Neon titisan berbilang
Merealisasikan berbentuk hati animasi garisanLangkah seterusnya ialah melaksanakan animasi garisan berbentuk hati, yang agak mudah menggunakan SVG. Pertama-tama kami perlu mendapatkan bentuk hati yang dilaksanakan menggunakan SVG Anda boleh memilih untuk melukis laluan SVG sendiri, atau anda boleh menggunakan beberapa alatan untuk melengkapkannya. <path></path>
M 400 160 A 2 2 90 0 0 260 160 A 2 2 90 0 0 120 160 C 120 230 260 270 260 350 C 260 270 400 230 400 160Dengannya, menggunakan
dan stroke-dasharray
SVG, kita boleh mendapatkan hati dengan mudah- animasi mengejar berbentuk: stroke-offset
<div class="container"> <svg> <path class="line" d="M 400 160 A 2 2 90 0 0 260 160 A 2 2 90 0 0 120 160 C 120 230 260 270 260 350 C 260 270 400 230 400 160" /> </svg> <svg> <path class="line line2" d="M 400 160 A 2 2 90 0 0 260 160 A 2 2 90 0 0 120 160 C 120 230 260 270 260 350 C 260 270 400 230 400 160" /> </svg> </div>
body { background: #000; } svg { position: absolute; } .container { position: relative; } .line { fill: none; stroke-width: 10; stroke-linejoin: round; stroke-linecap: round; stroke: #fff; stroke-dasharray: 328 600; animation: rotate 2s infinite linear; } .line2 { animation: rotate 2s infinite -1s linear; } @keyframes rotate { 0% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 928; } }Terangkan secara ringkas kod di atas:
- Dua grafik SVG yang sama, melalui
Potong grafik garisan lengkap kepada bahagian
stroke-dashoffset
- Dengan menukar
daripada 0 kepada 928, kitaran animasi baris lengkap direalisasikan (928 di sini ialah panjang laluan lengkap, Boleh didapati melalui skrip JavaScript)
stroke-dashoffset
整个动画过程 2s,设置其中一个的
animation-delay: -1s
,也就是提前 1s 触发动画,这样就实现了两个心形线条的追逐动画
效果如下:
给线条添加光影
有了上述两步的铺垫,这一步就非常好理解了。
最后,我们只需要给两段 SVG 线条,利用 drop-shadow()
添加不同颜色的多重阴影即可:
.line { ... --colorA: #f24983; filter: drop-shadow(0 0 2px var(--colorA)) drop-shadow(0 0 5px var(--colorA)) drop-shadow(0 0 10px var(--colorA)) drop-shadow(0 0 15px var(--colorA)) drop-shadow(0 0 25px var(--colorA)); } .line2 { --colorA: #37c1ff; }
最终,我们就利用 SVG + CSS 近乎完美的复刻了文章开头使用 WebGL 实现的效果:
完整的代码,你可以猛击 -- CSS 灵感 - SVG 配合 drop-shadow 实现线条光影效果
扩展延伸
当然,掌握了上述的技巧后,还有非常多有意思的效果我们可以去探索实现的,这里我简单的抛砖引玉。罗列两个我自己尝试的效果。
其中一大类是运用于按钮之上,可以实现按钮带光影的按钮效果,下图是其中一个的示意,巧妙运用 stroke-dashoffset
,它可以有非常多的变形:
完整源代码可以猛击 CodePen -- Neon Line Button
当然,我们也不是一定要借助 SVG,仅仅是 HTML + CSS 也是可以运用这个效果,利用它实现一个简单的 Loading 效果:
完整源代码可以猛击 CodePen -- Neon Loading
最后
好了,本文到此结束,希望对你有帮助 :)
如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。
原文地址:https://juejin.cn/post/7016521320183644173
作者:chokcoco
更多编程相关知识,请访问:编程视频!!
Atas ialah kandungan terperinci Gunakan fungsi drop-shadow() penapis CSS dengan bijak untuk mencipta kesan cahaya dan bayang garis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kursor adat dengan CSS adalah hebat, tetapi kita boleh mengambil sesuatu ke peringkat seterusnya dengan JavaScript. Menggunakan JavaScript, kita boleh beralih antara negeri kursor, letakkan teks dinamik dalam kursor, gunakan animasi kompleks, dan gunakan penapis.

Animasi CSS interaktif dengan unsur -unsur yang menghilangkan satu sama lain kelihatan lebih masuk akal pada tahun 2025. Walaupun tidak perlu untuk melaksanakan pong dalam CSS, peningkatan fleksibiliti dan kuasa CSS mengukuhkan kecurigaan Lee '

Petua dan cara untuk menggunakan harta penapis latar belakang CSS ke antara muka pengguna gaya. Anda akan belajar bagaimana untuk meletakkan penapis latar belakang di antara pelbagai elemen, dan mengintegrasikannya dengan kesan grafik CSS yang lain untuk membuat reka bentuk yang rumit.

Nah, ternyata ciri-ciri animasi terbina dalam SVG ' s tidak pernah ditamatkan seperti yang dirancang. Pasti, CSS dan JavaScript lebih mampu membawa beban, tetapi ia baik untuk mengetahui bahawa SMIL tidak mati di dalam air seperti sebelumnya

Yay, let ' s melompat untuk teks-wrap: Pretty Landing dalam Pratonton Teknologi Safari! Tetapi berhati -hatilah bahawa ia ' s berbeza dari bagaimana ia berfungsi dalam pelayar kromium.

Kemas kini trik CSS ini menyoroti kemajuan yang ketara dalam almanak, penampilan podcast baru-baru ini, panduan kaunter CSS baru, dan penambahan beberapa penulis baru yang menyumbang kandungan berharga.

Kebanyakan masa, orang mempamerkan ciri-ciri Tailwind ' Apabila dipamerkan dengan cara ini, @apply tidak menjanjikan sama sekali. Jadi obvio

Menggunakan seperti idiot datang ke ketidakcocokan antara alat yang anda gunakan untuk menggunakan dan ganjaran dalam kerumitan dikurangkan berbanding kerumitan yang ditambah.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Pelayar Peperiksaan Selamat
Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.
