Rumah >hujung hadapan web >tutorial css >Masking dalam penyemak imbas dengan CSS dan SVG
Dalam artikel ini, saya akan menunjukkan keupayaan CSS dan SVG Masking dalam tindakan, juga memastikan untuk memasukkan beberapa maklumat mengenai isu sokongan penyemak imbas semasa.
Pada masa penulisan, kebanyakan sampel kod hanya berfungsi dalam pelayar WebKit manakala topeng berasaskan SVG nampaknya menikmati sokongan penyemak imbas yang lebih luas. Oleh itu, jika anda ingin mencuba contoh, saya cadangkan anda menggunakan pelayar WebKit seperti Chrome.
Takeaways Key
Keratan melibatkan meletakkan bentuk vektor tertutup, seperti bulatan atau poligon, di atas imej atau elemen. Mana -mana bahagian imej di belakang bentuk akan kelihatan, manakala mana -mana bahagian di luar sempadan bentuk akan tersembunyi. Batasan bentuk dipanggil laluan klip, dan anda menciptanya menggunakan harta klip-laluan.
Masking dilakukan menggunakan imej PNG, kecerunan CSS, atau elemen SVG untuk menyembunyikan beberapa bahagian imej atau elemen lain pada halaman. Anda boleh mencapai ini menggunakan harta topeng CSS.
Dalam artikel ini, saya akan fokus secara eksklusif pada pelindung dengan harta topeng CSS dan elemen SVG
harta topeng CSS
Harta Topeng-Imej
Nilai tidak sama dengan menetapkan tiada nilai sama sekali. Sebaliknya - ia masih dianggap sebagai lapisan imej hitam telus.
anda boleh menetapkan imej topeng ke nilai URL. Ini boleh menjadi laluan ke fail imej PNG, fail SVG, atau rujukan kepada elemen SVG
Berikut adalah beberapa contoh:
/* masking with two comma-separated values */ .masked-element { mask-image: url(mask.png), none; } /* using external svg graphic as mask */ .masked-element { mask-image: url(mask.svg); }
ini adalah bagaimana anda merujuk elemen SVG
.masked-element { mask-image: url(#mask1); }
Imej kecerunan juga merupakan nilai yang sesuai untuk harta imej topeng:
.masked-element { mask-image: linear-gradient(black 0%, transparent 100%); }
dengan mod topeng anda boleh menetapkan imej lapisan topeng sama ada topeng alfa atau topeng luminance.
Topeng Alpha adalah imej dengan saluran Alpha. Secara lebih terperinci, saluran Alpha adalah maklumat ketelusan yang terkandung dalam setiap data piksel. Operasi masking dengan harta topeng mod yang ditetapkan ke Alpha akan menggunakan nilai alpha imej sebagai nilai topeng.
Contoh berguna saluran alfa adalah imej PNG dengan kawasan hitam dan telus. Unsur bertopeng akan menunjukkan melalui bahagian hitam imej topeng, yang mempunyai nilai alpha satu. Segala -galanya di bawah bahagian telus, yang mempunyai nilai alfa sifar, akan disembunyikan.
Saya akan menggunakan imej PNG ini sebagai topeng alpha saya:
dan melakukan operasi pelekat pada imej JPG di bawah:
ini adalah di mana sihir berlaku:
.masked-element { mask-image: url(alpha-mask.png); mask-mode: alpha; }
Dan inilah hasilnya seperti dalam penyemak imbas:
topeng luminance menggunakan nilai luminance imej sebagai nilai topeng. Imej PNG seperti yang di atas - tetapi berwarna putih - adalah contoh yang baik dari topeng pencahayaan:
Bidang elemen yang anda mahu topeng, yang dilindungi oleh piksel putih topeng, akan ditunjukkan. Bahagian elemen bertopeng yang diliputi oleh piksel telus topeng akan tersembunyi.
Menetapkan harta topeng topeng ke luminance dan menggunakan imej di atas sebagai topeng saya, akan memaparkan hasil yang sama seperti sebelumnya.
inilah kod:
.masked-element { mask-image: url(luminance-mask.png); mask-mode: luminance; }
Topeng-repeat berfungsi seperti harta latar belakang. Ia mengawal jubin imej lapisan topeng selepas anda menetapkan saiz dan kedudukan mereka.
Nilai yang mungkin adalah:
/* masking with two comma-separated values */ .masked-element { mask-image: url(mask.png), none; } /* using external svg graphic as mask */ .masked-element { mask-image: url(mask.svg); }mengakibatkan kesan pelekat berikut:
Contohnya, jika anda ingin meletakkan lapisan imej topeng di sudut kiri atas viewport, tetapkan harta topeng-kedudukan kepada nilai
0:
inilah yang kelihatan seperti kod di atas penyemak imbas:.masked-element { mask-image: url(#mask1); }
Menukar nilai harta topeng topeng di atas ke
, memaparkan imej lapisan topeng di bahagian bawah kanan viewport:
harta saiz topengSebagai contoh, menetapkan saiz topeng hingga 50% memaparkan imej lapisan topeng pada 50% lebar penuhnya:
menetapkan saiz topeng untuk mengandungi akan skala imej lapisan topeng ke saiz terbesar supaya kedua-dua lebar dan ketinggiannya boleh muat di dalam kawasan kedudukan topeng:
anda dapat melihat demo ini hidup dalam tindakan di codepen di bawah:
lihat contoh pena css topeng oleh sitepoint (@sitePoint) pada codepen.
Komposisi lapisan topeng
misalnya:
/* masking with two comma-separated values */ .masked-element { mask-image: url(mask.png), none; } /* using external svg graphic as mask */ .masked-element { mask-image: url(mask.svg); }
Dalam coretan di atas, mask2.png berlapis di atas mask1.png .
Hartanah komposit topeng membolehkan anda menggabungkan lapisan topeng yang berbeza mengikut nilai kata kunci berikut:
lihat pena CSS Mask Compositing oleh SitePoint (@SitePoint) pada Codepen.
harta tanah topeng
Berikut adalah topeng penuh Shorthand:
.masked-element { mask-image: url(#mask1); }kerja-kerja asal topeng dan topeng seperti asal-usul latar belakang dan latar belakang yang lebih biasa.
Walaupun anda boleh menyusun semula sifat-sifat dalam topeng, anda perlu menetapkan harta saiz topeng selepas harta topeng topeng, dipisahkan oleh simbol "/". Juga, menetapkan saiz topeng tanpa menetapkan kedudukan topeng akan menghasilkan perisytiharan yang tidak sah.
Akhirnya, kerana apa -apa nilai yang anda gagal untuk menentukan pada harta topeng ditetapkan kembali ke nilai lalai awalnya, dengan menggunakan topeng sangat berguna apabila anda perlu menetapkan semula mana -mana sifat individu.
elemen topeng SVG
Anda boleh menggunakan elemen
Satu lagi perkara yang boleh anda lakukan dengan SVG adalah menutup elemen lain pada halaman menggunakan teks.
mari kita lihat lebih dekat ke dalam setiap kemungkinan ini.
menggunakan elemen SVG
.masked-element { mask-image: linear-gradient(black 0%, transparent 100%); }dengan CSS berikut:
/* masking with two comma-separated values */ .masked-element { mask-image: url(mask.png), none; } /* using external svg graphic as mask */ .masked-element { mask-image: url(mask.svg); }
Dalam kod di atas, saya telah memasukkan elemen
Akhirnya, saya telah merujuk nilai ID SVG
Hanya dengan menambahkan beberapa deklarasi gaya lain untuk latar belakang halaman dan imej bertopeng, anda boleh mencapai kesan yang cukup dramatik seperti yang di bawah:
Perhatikan bagaimana bahagian topeng bulatan yang diisi dengan naungan putih kecerunan membolehkan imej bertopeng menunjukkan melalui. Sebaliknya, bahagian yang dipenuhi dengan warna hitam kecerunan menyembunyikan imej bertopeng.
Berikut adalah demo langsung ini di Codepen (ingat, ia hanya akan berfungsi pada Firefox!) .
lihat pena pena dengan elemen topeng SVG inline oleh SitePoint (@SitePoint) pada codepen.
Anda boleh menggunakan elemen SVG
Di dalam coretan di bawah, saya akan meletakkan imej yang saya mahu menutupi elemen SVG dan memohon harta topeng CSS kepadanya. Propertinya topeng CSS merujuk elemen SVG
.masked-element { mask-image: url(#mask1); }
dan ini adalah coretan yang menjaga operasi pelekat dalam CSS:
.masked-element { mask-image: linear-gradient(black 0%, transparent 100%); }
Hasilnya hampir sama dengan contoh sebelumnya, hanya kali ini anda dapat melihatnya pada semua pelayar utama.
Lihatlah demo codepen:
lihat topeng pena svg pada elemen SVG oleh sitepoint (@sitePoint) pada codepen.
anda boleh melakukan operasi pelekat menggunakan elemen teks di dalam topeng SVG anda:
.masked-element { mask-image: url(alpha-mask.png); mask-mode: alpha; }
.masked-element { mask-image: url(luminance-mask.png); mask-mode: luminance; }
Coretan di atas menambah elemen teks SVG hitam di dalam topeng SVG dan memohon kepada bentuk elips SVG biru muda menggunakan sifat topeng CSS. Apa pun yang terletak di belakang bentuk elips (dalam kes ini ia adalah imej latar belakang badan) akan ditunjukkan melalui teks. Hasilnya kelihatan seperti ini:
Kod penuh tersedia di Codepen:
lihat topeng teks pena svg oleh sitepoint (@sitePoint) pada codepen.
anda boleh menghidupkan kedudukan topeng dan saiz topeng menggunakan peralihan CSS dan animasi kerangka utama.
di bawah adalah contoh animasi kerangka utama asas imej topeng PNG berbentuk bintang.
Berikut adalah coretan kod yang berkaitan:
elemen bertopeng adalah html tag:
/* masking with two comma-separated values */ .masked-element { mask-image: url(mask.png), none; } /* using external svg graphic as mask */ .masked-element { mask-image: url(mask.svg); }
Operasi Masking menggunakan harta Masker Shorthand:
.masked-element { mask-image: url(#mask1); }
kelas .animate pada elemen menambah pergerakan ke imej berbentuk bintang menggunakan transformasi dan animasi CSS:
.masked-element { mask-image: linear-gradient(black 0%, transparent 100%); }
Lancarkan penyemak imbas WebKit seperti Chrome dan lihat demo langsung berikut di Codepen:
Lihat pena yang menghidupkan dengan topeng CSS oleh Maria Antonietta Perna (@antonietta) pada codepen.
anda boleh menambah kesan pelekat pada tag menggunakan elemen SVG
Berikut adalah demo codepen cepat: Animasi dapat dilihat pada mana -mana penyemak imbas, namun pelekat hanya diberikan di Firefox:
Lihat top Mask SVG Animate pada elemen HTML oleh SitePoint (@SitePoint) pada codepen.
Berita baiknya ialah, jika anda menggunakan topeng SVG anda pada grafik SVG, sokongan penyemak imbas dengan segera. Lihat demo animasi yang sama hanya menggunakan SVG:
Lihat Pena Animasi SVG Animasi pada Elemen SVG oleh SitePoint (@SitePoint) pada Codepen.
Saya telah menyentuh isu sokongan penyemak imbas sepanjang artikel ini. Pecahan mudah keadaan pada masa penulisan kelihatan seperti ini:
Demo Codepen hebat ini oleh Yoksel menawarkan ilustrasi visual keadaan seni sejauh sokongan penyemak imbas pergi.
Alan Greenblatt menyediakan repositori github di mana dia masuk ke dalam butiran yang mana harta berkaitan grafik CSS disokong oleh pelayar yang mana.
Jadual Keserasian Sokongan Penyemak imbas di laman web Can I menggunakan maklumat lanjut dan pautan ke lebih banyak sumber.
Walaupun sokongan penyemak imbas semasa untuk topeng CSS tidak bagus, jika anda menggunakan ciri ini sebagai peningkatan pada beberapa elemen hiasan, pengguna penyemak imbas yang tidak disokong tidak akan menyedari bahawa mereka hilang.
Akhirnya, memohon kesan pelekat pada grafik SVG dengan elemen SVG
Adakah anda tahu kesan pelekat yang sejuk di web yang ingin anda kongsi? Tekan kotak komen dan beritahu saya.
CSS dan SVG Masking kedua -duanya membolehkan anda menyembunyikan atau mendedahkan bahagian elemen. Walau bagaimanapun, mereka berbeza dalam pendekatan dan keupayaan mereka. CSS Masking menggunakan imej sebagai lapisan topeng di mana saluran alpha imej topeng menentukan keterlihatan elemen. Sebaliknya, SVG Masking menggunakan grafik vektor sebagai lapisan topeng, yang memberikan lebih banyak fleksibiliti dan kawalan ke atas bentuk dan saiz topeng. Masking SVG juga menyokong topeng warna dan kecerunan, yang tidak mungkin dengan masking CSS. Tambah kesan visual yang unik ke elemen web anda. Untuk membuat topeng kecerunan dengan SVG, anda perlu menentukan elemen lineevadient atau radialgradient di dalam elemen topeng. Unsur kecerunan harus mempunyai sekurang -kurangnya dua elemen berhenti yang menentukan warna dan kelegapan pada titik yang berbeza di sepanjang kecerunan. dan SVG menutup bersama untuk menghasilkan kesan pelekat yang kompleks. Anda boleh memohon topeng CSS ke elemen dan kemudian memohon topeng SVG ke elemen yang sama. Penglihatan akhir elemen ditentukan oleh gabungan dua topeng. Jika anda perlu menyokong Internet Explorer, anda harus menggunakan masking SVG sebaliknya. Masking SVG disokong dalam semua pelayar utama, termasuk Internet Explorer.
Bagaimana saya boleh membuat topeng kompleks dengan pelbagai bentuk? , Anda boleh menggunakan masking SVG. SVG Masking membolehkan anda menggunakan pelbagai elemen bentuk (seperti Rect, Circle, Polygon, dan lain -lain) sebagai elemen topeng. Anda boleh meletakkan dan saiz bentuk ini secara bebas untuk membuat topeng kompleks.
Masking CSS menyokong topeng video. Anda boleh menggunakan video sebagai imej topeng dengan menetapkan harta imej topeng ke url video. Masking SVG tidak menyokong topeng video.
imej topeng. Anda boleh menyesuaikan kelegapan dengan mengedit imej topeng. Untuk pelindung SVG, kelegapan topeng ditentukan oleh sifat-sifat opacity dan stroke-opacity unsur topeng. Anda boleh menyesuaikan kelegapan dengan menukar sifat -sifat ini.
Atas ialah kandungan terperinci Masking dalam penyemak imbas dengan CSS dan SVG. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!