پروژه تصویرسازی با استفاده از CSS

۲ تیر ۱۴۰۳

با اضافه کردن بیستمین طرح به پروژه single div CSS illustration یا تصویرسازی با استفاده از CSS و یک عنصر HTML تصمیم گرفتم کمی در مورد این پروژه بنویسم.

تصویرسازی با استفاده از CSS

می‌توانید پیش‌نمایش پروژه را که با استفاده از github pages ساخته شده در این لینک ببینید، همچنین برخی از طرح‌ها بصورت جدا در CodePen نیز منتشر شده‌اند و در این collection قابل مشاهده هستند.

کمی در مورد تصویرسازی یا نقاشی با استفاده از CSS

قبل از اینکه به single div CSS illustration بپردازیم باید بدانید CSS illustration یا تصویر سازی با استفاده از CSS چیست؟

CSS drawing یا CSS illustration یعنی اینکه با استفاده از HTML و CSS تصویرسازی انجام دهید یا نقاشی بکشید، در این کارها از هیچ تصویری استفاده نمی‌شود و تنها با استفاده از CSS و HTML در ویرایشگر متن کدنویسی می‌شود. با جستجو می‌توانید موارد متعددی را پیدا کنید، برای نمونه می‌توانم به این تصویرسازی از Diana Smith اشاره کنم.

روش انجام کار خیلی پیچیده نیست، کافیست یک طرح پیچیده را بعنوان مجموعه‌ای از شکل‌های هندسی ساده‌‌ در نظر بگیرید، سپس این شکل‌های ساده را با استفاده از HTML و CSS رسم نموده و با استفاده از ویژگی position به گونه‌ای در صفحه قرار دهید که طرح نهایی را ایجاد کند، همچنین برای طرح‌های پیچیده‌تر لازم هست از ویژگی‌های پیشرفته تر CSS نظیر clip-path ،mask-image و transform استفاده کنید.

ایده پروژه single div CSS از کجا آمده است؟

همیشه کارهایی تحت عنوان single div CSS را در CodePen می‌دیدم، در این کارها برای تصویرسازی از CSS و فقط یک عنصر HTML استفاده می‌شود. با توجه به اینکه خودم با استفاده از CSS تصویرسازی‌هایی انجام داده بودم، می‌دانستم انجام همچین کارهایی خیلی ساده نیست و کنجکاو بودم روش کار را یاد بگیرم بنابراین تصمیم گرفتم اطلاعات بیشتری در مورد نحوه انجام تصویرسازی با استفاده از یک عنصر HTML بدست آورم.

بعد از جستجو به مقاله‌ای با عنوان Single Div Drawings with CSS برخوردم و اطلاعاتی در خصوص روش انجام کار بدست آوردم ولی نکته مهم‌تر آشنایی با نویسنده مقاله Lynn Fisher بوده است. Lynn Fisher در طول یک دهه تصویرسازی‌ها و طرح‌های زیادی را با استفاده از یک عنصر HTML و CSS انجام داده و تحت عنوان پروژه‌ای به نام single-div CSS بروی گیت‌هاب منتشر کرده است.

بعد از دیدن پروژه single-div CSS تصمیم گرفتم پروژه‌ای مشابه را شروع کنم تا فرصتی برای یادگیری عمیق‌تر CSS داشته باشم و همچنین فعالیتم در Github و CodePen را افزایش دهم.

نحوه انجام تصویرسازی با استفاده از CSS و یک عنصر HTML

اساس تصویرسازی با استفاده از یک عنصر HTML استفاده از ویژگی background در CSS است. ویژگی background این قابلیت را دارد که تعداد متعددی مقدار دریافت کند در واقع شما می‌توانید تعداد نامحدودی background-image با اندازه‌ها و موقعیت‌های مختلف را به یک عنصر HTML اختصاص دهید.

همچنین این امکان وجود دارد که از linear-gradient، radial-gradient و conic-gradient بعنوان background-image استفاده کنید؛ با استفاده از ویژگی‌های نام برده شده می‌توانید بسیاری از شکل‌های پایه‌ای مثل مربع، مستعطیل، دایره، نیم‌دایره و مثلث را در سایز‌های مختلف ایجاد کنید و با ترکیب شکل‌های مختلف طرح‌های پیچیده‌ای را ایجاد کنید.

بعنوان مثال کدهای زیر را در نظر بگیرید:

  background: 
  /* مثلث */
  conic-gradient(from 45deg, transparent 25%, #e63946 25% 50%, transparent 50%) center / 200px 200px,
  /* دایره */
  radial-gradient(#f1faee 79px, transparent 80px) center / 160px 160px,
  /* مربع */
  linear-gradient(#457b9d, #457b9d) center / 200px 200px;
  background-repeat: no-repeat;

خروجی کد زیر سه شکل پایه‌ای مربع، دایره و مثلث خواهد بود که به ترتیب روی هم قرار می‌گیرند.

در کنار استفاده از background-image های متعدد، ویژگی‌هایی مانند box-shadow و mask-image هم در این روش بسیار کاربردی هستند. ترفند دیگر استفاده از عنصرهای مجازی (pseudo elements) است که کمک بزرگی هستند و در اکثر تصویرسازی‌ها از این عنصرها استفاده می‌شود.

چه چیزهایی از این پروژه آموختم

محدودیت در استفاده از عنصر HTML برای تصویرسازی باعث شد با ویژگی‌های جدیدی از CSS آشنا شوم و جزئیاتی در مورد ویژگی‌هایی که از قبل می‌دانستم یاد بگیرم؛ یکی از این موارد ویژگی‌های مرتبط با background بود همچنین استفاده زیاد از توابع مربوط به گرادیانت (gradient) باعث یادگیری عمیق‌تر این توابع شد.

برای اولین بار از mask-image و ویژگی‌های مرتبط مانند mask-size و mask-position استفاده کردم و در خصوص تفاوت mask-image و clip-path اطلاعات جدیدی به دست آوردم.

بعد از اینکه به دلیل محدودیت‌های استفاده از عنصر HTML با ویژگی z-index به مشکل برخوردم مقاله‌ای با عنوان What No One Told You About Z-Index پیدا کردم و با مفاهیمی مانند Stacking Order و Stacking Contexts آشنا شدم که برایم جدید بود و به حل مشکلی که داشتم کمک کرد.

در نهایت با بررسی تصویرسازی‌های مختلفی که به روش single div ساخته شده بودند، روشی جالب برای ساخت pixel art با استفاده از ویژگی box-shadow یاد گرفتم و توانستم با استفاده از CSS animation شکلی که ساختم را متحرک کنم.

جمع بندی

تصویر سازی با استفاده از CSS کمک کرد خیلی از مفاهیم مهم CSS را به خوبی درک کنم و یاد بگیرم، پروژه single div CSS illustration و ایجاد محدودیت برای عنصرهای HTML هم باعث ایجاد نگرش جدیدی شد و کمترین دست‌آوردش یک پروژه ساده است که فکر می‌کنم نشان دهنده توانایی‌ام در CSS باشه. پیشنهاد می‌کنم حتما برای یک بار هم که شده سعی کنید با استفاده از CSS یک تصویرسازی انجام دهید، مطمئن باشید نتیجه خوبی خواهد داشت.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *