فرانت اند دولوپر :)
نحوه نمایش رنگی تصاویر png سفید با کد رنگ دلخواه
خب مشکل من از جایی شروع شد که قرار شد یک لیست از تصاویر png (که همه سفید هستند) به همراه کد رنگ هاشون از API بگیرم و به صورت آیکون های رنگی نمایش بدم.
که البته اگر از حالت روز در ویرگول استفاده کنید این عکس رو نخواهید دید چون بک گراند سفیده و عکس هم سفیده و من بک گراند عکس رو تغییر ندادم تا کاملا متوجه مشکل بشوید.
خلاصه بعداز کلی کلنجار رفتن با css خیلی کلافه شده بودم و فقط تونسته بودم با
filter: opacity(0.5) drop-shadow(0 0 0 #ff0000);
یک مقدار رنگ به آیکون هام بدم اما اصلا قابل قبول نبود. مثلا کد بالا که رنگ عکس رو باید قرمز کنه تبدیل به عکس پایین می کنه:
همونطور که ملاحضه می کنید تقریبا قرمز شده اما جالب و قابل قبول نیست.
وپس از کلی سرچ و امتحان کردن روش های مختلف و فیلترهای مختلف به راهکار استفاده از svg رسیدم که دقیقا همون چیزی بود که من نیاز داشتم به تکه کد پایین دقت کنید.
<svg width="40" height="40" viewBox="0 0 40 40">
<defs>
<filter id="prefix__a17">
<feFlood flood-color="#ff0000" result="flood"></feFlood>
<feComposite in="SourceGraphic" in2="flood" operator="arithmetic" k1="1">
</feComposite>
</filter>
</defs>
<image width="100%" height="100%" xlink:href="https://link/to" filter="url(#prefix__a17)" type="image">
</image>
</svg>
باید دقت کنید که حتما باید id تگ filter با مقدار پراپرتی filter در image یکسان باشد و باید کد رنگ مورد نظر خودمون رو به پراپرتی flood-color در تگ feFlood تخصیص بدیم.
که در نهایت نتیجه کد بالا به صورت عکس پایین نمایش داده می شود.
همونطور که مشاهده می کنید تصویر دقیقا رنگ مورد نظر رو نمایش داده و این دقیقا همون آیکون مد نظر من هست.
در انتها تشکر میکنم که این پست رو مطالعه کردید و اگر راه بهتری به نظرتون رسید بهم اطلاع بدید.
مطلبی دیگر از این انتشارات
Event Capturing و Event Bubbling در جاوااسکریپت
مطلبی دیگر از این انتشارات
روتینگ فارسی برای next js
مطلبی دیگر از این انتشارات
چگونگی Data Fetching (واکشی دادها) در Nextjs