journey
title سفر شما در استایلدهی CSS
section بنیاد
اتصال فایل CSS: 3: Student
درک cascade: 4: Student
یادگیری ارثبری: 4: Student
section انتخابگرها
هدفگیری عناصر: 4: Student
الگوهای کلاس: 5: Student
خاصیت شناسه (ID): 5: Student
section طرحبندی
موقعیت عناصر: 4: Student
ایجاد کانتینرها: 5: Student
ساخت تراریوم: 5: Student
section پولیش
افزودن افکتهای بصری: 5: Student
طراحی واکنشگرا: 5: Student
بازتابهای شیشهای: 5: Student
اسکچنوت توسط تومومی ایمورا
یادتان هست که تراریوم HTML شما چقدر ساده به نظر میرسید؟ CSS همان جایی است که آن ساختار ساده را به چیزی جذاب و دیدنی تبدیل میکنیم.
اگر HTML مانند ساختن چارچوب یک خانه باشد، CSS همه چیزهایی است که آن خانه را مثل یک خانه واقعی حس میکند - رنگهای نقاشی، چیدمان مبلمان، نورپردازی و نحوه جریان یافتن اتاقها. تصور کنید کاخ ورسای چگونه از یک کلبه ساده شکار شروع شد، اما توجه دقیق به تزئینات و چیدمان آن را به یکی از زیباترین ساختمانهای جهان تبدیل کرد.
امروز، تراریوم شما را از یک ساختار ساده به یک ساختار صیقلی و جذاب تبدیل خواهیم کرد. یاد خواهید گرفت که چگونه عناصر را به دقت موقعیتدهی کنید، چیدمانها را به اندازههای مختلف صفحه نمایش واکنشگرا بسازید و جذابیت بصریای ایجاد کنید که وبسایتها را گیراتر میکند.
تا پایان این درس، خواهید دید که چگونه استایلدهی راهبردی CSS میتواند پروژه شما را به شکل قابلتوجهی بهبود بخشد. بیایید کمی به تراریوم شما سبک بدهیم.
mindmap
root((مبانی CSS))
Cascade
قوانین اختصاصی بودن
وراثت
ترتیب اولویت
حل تعارض
Selectors
تگهای عنصر
کلاسها (.class)
شناسهها (#id)
ترکیبکنندهها
Box Model
حاشیه
حاشیه دور
فاصله داخلی
محتوا
Layout
موقعیتیابی
نوع نمایش
فلکسباکس
گرید
Visual Effects
رنگها
سایهها
انتقالها
انیمیشنها
Responsive Design
پرسوجوهای رسانهای
واحدهای انعطافپذیر
متای نما
موبایل اول
CSS اغلب فقط به عنوان "زیبا کردن چیزها" شناخته میشود، اما نقش بسیار گستردهتری دارد. CSS مانند کارگردان یک فیلم است - شما کنترل میکنید که همه چیز نه تنها چگونه دیده شود، بلکه چگونه حرکت کند، به تعاملی پاسخ دهد و خودش را با شرایط متفاوت تطبیق دهد.
CSS مدرن تواناییهای شگفتآوری دارد. میتوانید کدی بنویسید که به طور خودکار چیدمانها را برای تلفنها، تبلتها و کامپیوترهای رومیزی تنظیم کند. میتوانید حرکات نرمی بسازید که توجه کاربران را به جایی که لازم است هدایت کند. وقتی همه چیز با هم کار کند، نتایج میتواند بسیار چشمگیر باشد.
💡 نکته حرفهای: CSS دائماً با ویژگیها و قابلیتهای جدید در حال پیشرفت است. همیشه قبل از استفاده از ویژگیهای جدید CSS در پروژههای تولید، پشتیبانی مرورگرها را در CanIUse.com بررسی کنید.
در این درس چه کار خواهیم کرد:
- ایجاد طراحی کامل بصری برای تراریوم شما با استفاده از تکنیکهای مدرن CSS
- کاوش مفاهیم بنیادی مثل cascade، inheritance، و انتخابگرهای CSS
- پیادهسازی موقعیتدهی واکنشگرا و استراتژیهای چیدمان
- ساخت کانتینر تراریوم با استفاده از شکلها و استایلهای CSS
باید ساختار HTML تراریومتان را از درس قبلی کامل کرده باشید و آماده استایلدهی باشد.
📺 منبع ویدیویی: این ویدیو راهنمای مفید را ببینید
قبل از شروع استایلدهی، باید CSS را به HTML متصل کنیم. این اتصال به مرورگر میگوید کجا باید دستورهای استایلدهی تراریوم ما را پیدا کند.
در پوشه تراریوم خود، یک فایل جدید به نام style.css بسازید، سپس آن را در بخش <head> سند HTML خود لینک کنید:
<link rel="stylesheet" href="./style.css" />این کد چه کاری انجام میدهد:
- ایجاد ارتباط بین فایلهای HTML و CSS شما
- گفتن به مرورگر برای بارگذاری و اعمال استایلها از فایل
style.css - استفاده از ویژگی
rel="stylesheet"برای مشخص کردن اینکه این یک فایل CSS است - ارجاع مسیر فایل با
href="./style.css"
تا به حال فکر کردهاید چرا CSS را style sheetsهای cascading یا به عبارتی سلسلهمراتبی مینامند؟ استایلها مانند آبشار پایین میآیند و گاهی با هم تداخل دارند.
مثل ساختار فرماندهی نظامی را در نظر بگیرید - یک دستور کلی ممکن است بگوید "همه سربازها سبز بپوشند"، اما یک دستور خاص به یگان شما میتواند بگوید "برای مراسم لباس رسمی آبی بپوشید". دستور خاص تر برنده است. CSS نیز از منطق مشابهی پیروی میکند و فهم این سلسلهمراتب دیباگ کردن را بسیار سادهتر میکند.
بیایید ببینیم cascade چگونه عمل میکند با ایجاد یک تضاد استایل. ابتدا یک استایل درون خطی به تگ <h1> اضافه کنید:
<h1 style="color: red">My Terrarium</h1>این کد چه کاری انجام میدهد:
- اعمال رنگ قرمز به صورت مستقیم روی عنصر
<h1>با استایل درون خطی - استفاده از ویژگی
styleبرای درج CSS مستقیماً در HTML - ایجاد بالاترین اولویت برای این عنصر خاص
سپس این قاعده را به فایل style.css اضافه کنید:
h1 {
color: blue;
}در بالا ما:
- تعریف قاعده CSS برای همه عناصر
<h1> - تنظیم رنگ متن به آبی با استفاده از فایل استایل خارجی
- ایجاد قاعدهای با اولویت کمتر نسبت به استایل درون خطی
✅ سؤال دانش: کدام رنگ در وباپ شما نمایش داده میشود؟ چرا آن رنگ برنده است؟ میتوانید موقعیتهایی یادآوری کنید که بخواهید استایلها را روی هم بنویسید؟
flowchart TD
A["مرورگر عنصر h1 را مشاهده میکند"] --> B{"بررسی استایلهای درون خطی"}
B -->|یافت شد| C["style='color: red'"]
B -->|هیچ| D{"بررسی قواعد شناسه"}
C --> E["اعمال رنگ قرمز (1000 امتیاز)"]
D -->|یافت شد| F["#heading { color: green }"]
D -->|هیچ| G{"بررسی قواعد کلاس"}
F --> H["اعمال رنگ سبز (100 امتیاز)"]
G -->|یافت شد| I[".title { color: blue }"]
G -->|هیچ| J{"بررسی قواعد عنصر"}
I --> K["اعمال رنگ آبی (10 امتیاز)"]
J -->|یافت شد| L["h1 { color: purple }"]
J -->|هیچ| M["استفاده از پیشفرض مرورگر"]
L --> N["اعمال رنگ بنفش (1 امتیاز)"]
style C fill:#ff6b6b
style F fill:#51cf66
style I fill:#339af0
style L fill:#9775fa
💡 ترتیب اولویت CSS (از بالا به پایین):
- استایلهای درون خطی (ویژگی style)
- شناسهها (#myId)
- کلاسها (.myClass) و ویژگیها
- انتخابگرهای عنصر (h1, div, p)
- تنظیمات پیشفرض مرورگر
ارثبری CSS شبیه وراثت ژنتیکی است - عناصر برخی خصوصیات را از اجداد خود میگیرند. اگر خانواده فونت را در عنصر body تنظیم کنید، تمام متن داخل به طور خودکار از آن فونت استفاده میکند. این شبیه به این است که چطور فک متمایز خانواده هابسبورگها در نسلهای مختلف بدون تعیین جداگانه برای هر فرد ظاهر میشد.
اما همه چیز ارث نمیبرد. سبکهای متنی مثل فونتها و رنگها ارث میبرند، اما ویژگیهای چیدمان مانند حاشیهها و حاشیهنماها (border) اینطور نیستند. همانگونه که کودکان ممکن است ویژگی فیزیکی والدین را به ارث ببرند ولی سبک لباس پوشیدن آنها را نه.
بیایید ارثبری را با تنظیم فونت برای عنصر <body> ببینیم:
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}توضیح آنچه رخ میدهد:
- تنظیم خانواده فونت برای کل صفحه با هدف قرار دادن عنصر
<body> - استفاده از استک فونت با گزینههای پشتیبان برای سازگاری بهتر با مرورگرها
- اعمال فونتهای مدرن سیستمی که در سیستمعاملهای مختلف خوب به نظر میرسند
- اطمینان از اینکه همه عناصر فرزند این فونت را به ارث میبرند مگر اینکه به طور خاص پوشش داده شود
ابزار توسعهدهنده مرورگر خود را باز کنید (F12)، به تب Elements بروید و عنصر <h1> خود را بررسی کنید. خواهید دید که خانواده فونت را از body به ارث میبرد:
✅ زمان آزمایش: سعی کنید ویژگیهای ارثبرنده دیگری مانند color، line-height یا text-align را روی <body> تنظیم کنید. چه اتفاقی برای عنوان و سایر عناصر میافتد؟
📝 ویژگیهایی که منتقل میشوند (ارثبرنده):
color,font-family,font-size,line-height,text-align,visibilityویژگیهایی که منتقل نمیشوند:
margin,padding,border,width,height,position
درک پایهای CSS: قبل از رفتن به انتخابگرها، اطمینان حاصل کنید که میتوانید:
- ✅ تفاوت بین cascade و inheritance را توضیح دهید
- ✅ پیشبینی کنید که در تعارض specificity کدام استایل برنده میشود
- ✅ ویژگیهایی که از والد به ارث میرسند را مشخص کنید
- ✅ اتصال فایلهای CSS به HTML را به درستی انجام دهید
آزمون سریع: اگر این استایلها را داشته باشید، رنگ یک <h1> درون <div class="special"> چه خواهد بود؟
div { color: blue; }
.special { color: green; }
h1 { color: red; }پاسخ: قرمز (انتخابگر عنصر مستقیماً روی h1 اعمال میشود)
انتخابگرهای CSS نحوه هدفگیری عناصر خاص برای استایلدهی هستند. آنها شبیه دادن دستورالعمل دقیقاند - به جای گفتن "خانه"، ممکن است بگویید "خانه آبی با درب قرمز در خیابان میپل".
CSS روشهای مختلفی برای تعیین دقت دارد، و انتخاب انتخابگر درست مانند انتخاب ابزار مناسب برای کار است. گاهی شما باید به همه درهای محله استایل دهید و گاهی فقط یک درب خاص.
انتخابگرهای عنصر با نام تگ HTML هدف قرار میدهند. آنها برای تنظیم سبکهای پایه ایدهآلند که به طور گسترده در صفحه اعمال میشوند:
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 0;
padding: 0;
}
h1 {
color: #3a241d;
text-align: center;
font-size: 2.5rem;
margin-bottom: 1rem;
}درک این استایلها:
- تنظیم تایپوگرافی سازگار برای کل صفحه با انتخابگر
body - حذف حاشیهها و padding پیشفرض مرورگر برای کنترل بهتر
- استایلدهی به تمام عناصر عنوان با رنگ، تراز و فاصلهبندی
- استفاده از واحد rem برای اندازه فونت قابل تنظیم و قابل دسترس
در حالی که انتخابگرهای عنصر برای استایلدهی عمومی خوب کار میکنند، برای استایل دادن به اجزای خاص مثل گیاهان تراریوم نیاز به انتخابگرهای دقیقتر دارید.
انتخابگرهای id با نماد # استفاده میشوند و عناصر با شناسه (id) خاص را هدف میگیرند. چون idها باید در یک صفحه یکتا باشند، برای استایلدهی به عناصر خاص و منحصربهفرد مثل کانتینرهای گیاه سمت چپ و راست که در تراریوم داریم ایدهآلاند.
بیایید استایلدهی کانتینرهای جانبی تراریوم که گیاهان داخل آنها قرار میگیرند را بسازیم:
#left-container {
background-color: #f5f5f5;
width: 15%;
left: 0;
top: 0;
position: absolute;
height: 100vh;
padding: 1rem;
box-sizing: border-box;
}
#right-container {
background-color: #f5f5f5;
width: 15%;
right: 0;
top: 0;
position: absolute;
height: 100vh;
padding: 1rem;
box-sizing: border-box;
}این کد چه کار میکند:
- موقعیتدهی کانتینرها در لبههای چپ و راست با موقعیت
absolute - استفاده از واحد vh (ارتفاع صفحه نمایش) برای ارتفاع واکنشگرا که به اندازه صفحه نمایش واکنش نشان میدهد
- اعمال
box-sizing: border-boxبرای این که padding در عرض کل حساب شود - حذف واحدهای px غیرضروری از مقادیر صفر برای کد تمیزتر
- تنظیم رنگ پسزمینه ملایمی که از خاکستری شدید چشم را کمتر خسته میکند
✅ چالش کیفیت کد: توجه کنید چطور این CSS اصل DRY (تکرار نکن خودت) را نقض میکند. میتوانید با ترکیب یک id و یک کلاس آن را بهینه کنید؟
روش بهبود یافته:
<div id="left-container" class="container"></div>
<div id="right-container" class="container"></div>.container {
background-color: #f5f5f5;
width: 15%;
top: 0;
position: absolute;
height: 100vh;
padding: 1rem;
box-sizing: border-box;
}
#left-container {
left: 0;
}
#right-container {
right: 0;
}انتخابگرهای کلاس با نماد . استفاده میشوند و وقتی که میخواهید استایلهای یکسان را به تعداد زیادی عنصر اعمال کنید عالیاند. برخلاف idها، کلاسها را میتوانید در سراسر HTML خود مجدداً استفاده کنید، که آنها را برای الگوهای استایلدهی یکنواخت ایدهآل میکند.
در تراریوم ما، هر گیاه نیاز به استایل مشابهی دارد ولی همچنین نیاز به موقعیتدهی منحصربهفردی دارد. ما ترکیبی از کلاسها برای استایلهای مشترک و شناسهها برای موقعیتدهی منحصربهفرد استفاده خواهیم کرد.
اینجا ساختار HTML برای هر گیاه است:
<div class="plant-holder">
<img class="plant" alt="Decorative plant for terrarium" id="plant1" src="../../../../translated_images/fa/plant1.d18b18ffe73da18f.png" />
</div>عناصر کلیدی توضیح داده شده:
- استفاده از
class="plant-holder"برای استایل ثابت کانتینر برای همه گیاهان - اعمال
class="plant"برای استایل و رفتار مشترک تصاویر - شامل شناسه منحصر به فرد
id="plant1"برای موقعیتیابی فردی و تعامل جاوااسکریپت - ارائه متن جایگزین توصیفی برای دسترسیپذیری نابینایان
اکنون این استایلها را به فایل style.css خود اضافه کنید:
.plant-holder {
position: relative;
height: 13%;
left: -0.6rem;
}
.plant {
position: absolute;
max-width: 150%;
max-height: 150%;
z-index: 2;
transition: transform 0.3s ease;
}
.plant:hover {
transform: scale(1.05);
}توضیح این استایلها:
- ایجاد موقعیتدهی نسبی برای نگهدارنده گیاه برای ایجاد زمینه موقعیتدهی
- تنظیم هر نگهدارنده روی ۱۳٪ ارتفاع، تا همه گیاهان به صورت عمودی بدون اسکرول جا شوند
- چرخش نگهدارندهها کمی به سمت چپ برای بهبود تمرکز گیاهان در ظرف خودشان
- امکان اندازهگیری واکنشگرای گیاه با خصوصیات
max-widthوmax-height - استفاده از
z-indexبرای قرار دادن گیاهان روی سایر عناصر تراریوم - افزودن افکت هاور ملایم با ترنزیشنهای CSS برای تعامل بهتر کاربر
✅ تفکر نقادانه: چرا به هر دو انتخابگر .plant-holder و .plant نیاز داریم؟ اگر فقط یکی را استفاده کنیم چه اتفاقی میافتد؟
💡 الگوی طراحی: کانتینر (
.plant-holder) چیدمان و موقعیتدهی را کنترل میکند، در حالی که محتوا (.plant) ظاهر و مقیاسدهی را کنترل میکند. این جداسازی باعث میشود کد قابل نگهداریتر و انعطافپذیرتر باشد.
موقعیتدهی CSS مانند کارگردان صحنه نمایش است - شما مشخص میکنید هر بازیگر کجا بایستد و چگونه روی صحنه حرکت کند. برخی بازیگران طبق چینش استاندارد حرکت میکنند، برخی دیگر برای اثر دراماتیک نیاز به موقعیتدهی خاص دارند.
وقتی موقعیتدهی را فهمیدید، بسیاری از چالشهای چیدمان قابل مدیریت میشوند. نیاز به نوار ناوبری که هنگام اسکرول کردن صفحه چسبیده بماند دارید؟ موقعیتدهی این را امکانپذیر میکند. میخواهید راهنمای ابزار (tooltip) در نقطه خاصی ظاهر شود؟ این هم موقعیتدهی است.
quadrantChart
title استراتژی موقعیتیابی CSS
x-axis جریان سند --> حذف شده از جریان
y-axis موقعیتیابی ایستا --> کنترل دقیق
quadrant-1 مطلق
quadrant-2 ثابت
quadrant-3 ایستا
quadrant-4 چسبان
Static: [0.2, 0.2]
Relative: [0.3, 0.6]
Absolute: [0.8, 0.8]
Fixed: [0.9, 0.7]
Sticky: [0.5, 0.9]
| مقدار موقعیت | رفتار | موقعیت استفاده |
|---|---|---|
static |
جریان پیشفرض، نادیده گرفتن top/left/right/bottom | چیدمان نرمال سند |
relative |
موقعیتیابی نسبی به موقعیت عادی خود | تنظیمات کوچک، ایجاد زمینه موقعیتدهی |
absolute |
موقعیتیابی نسبی به نزدیکترین والد موقعیتیافته | مکان دقیق، روی هم قرار گرفتنها |
fixed |
موقعیتیابی نسبی به viewport | نوارهای ناوبری، عناصر شناور |
sticky |
تغییر بین نسبی و ثابت بر اساس اسکرول | سربرگهایی که هنگام اسکرول چسبنده میمانند |
تراریوم ما از ترکیب راهبردی انواع موقعیتدهی استفاده میکند تا چیدمان دلخواه ایجاد شود:
/* Container positioning */
.container {
position: absolute; /* Removes from normal flow */
/* ... other styles ... */
}
/* Plant holder positioning */
.plant-holder {
position: relative; /* Creates positioning context */
/* ... other styles ... */
}
/* Plant positioning */
.plant {
position: absolute; /* Allows precise placement within holder */
/* ... other styles ... */
}درک راهبرد موقعیتدهی:
- کانتینرهای absolute از جریان معمول سند خارج شده و به لبههای صفحه چسبیدهاند
- نگهدارندههای گیاه relative زمینه موقعیتدهی ایجاد کرده در حالی که در جریان سند باقی میمانند
- گیاهان absolute میتوانند دقیقاً داخل کانتینرهای نسبی موقعیتدهی شوند
- این ترکیب اجازه میدهد گیاهان به صورت عمودی روی هم قرار بگیرند و در عین حال هر کدام موقعیتیابی فردی داشته باشند
🎯 چرا این مهم است: عناصر
plantنیاز به موقعیتیابی absolute دارند تا در درس بعدی بتوانند درگ (کشیدن) شوند. موقعیتیابی absolute آنها را از جریان معمول چیدمان حذف میکند و تعامل درگآنددراپ را ممکن میسازد.
✅ زمان آزمایش: سعی کنید مقادیر موقعیتدهی را تغییر دهید و نتایج را مشاهده کنید:
- چه اتفاقی میافتد اگر
.containerرا ازabsoluteبهrelativeتغییر دهید؟ - چیدمان چگونه تغییر میکند اگر
.plant-holderبه جایrelativeازabsoluteاستفاده کند؟ - وقتی که موقعیت
.plantرا بهrelativeتغییر میدهید چه اتفاقی میافتد؟
تسلط بر موقعیتدهی CSS: مکث کنید تا درک خود را بررسی کنید:
- ✅ آیا میتوانید توضیح دهید چرا گیاهان برای کشیدن و رها کردن به موقعیتیابی مطلق نیاز دارند؟
- ✅ آیا میدانید ظرفهای نسبی چگونه زمینه موقعیتیابی ایجاد میکنند؟
- ✅ چرا ظرفهای جانبی از موقعیتیابی مطلق استفاده میکنند؟
- ✅ اگر اعلامیههای موقعیت را کاملاً حذف کنید چه اتفاقی میافتد؟
ارتباط با دنیای واقعی: درباره چگونگی منعکس شدن موقعیتدهی CSS از چیدمان دنیای واقعی فکر کنید:
- Static: کتابها روی قفسه (ترتیب طبیعی)
- Relative: حرکت دادن کمی کتاب اما نگه داشتن جای آن
- Absolute: قرار دادن نشانگر کتاب روی شماره صفحه دقیق
- Fixed: یادداشت چسبندهای که هنگام ورق زدن صفحات، قابل مشاهده باقی میماند
اکنون یک شیشه تراریوم شیشهای فقط با استفاده از CSS میسازیم — بدون نیاز به تصاویر یا نرمافزار گرافیکی.
ایجاد شیشه واقعی، سایهها و عمق با استفاده از موقعیتیابی و شفافیت قابلیتهای بصری CSS را نشان میدهد. این تکنیک شبیه نحوه استفاده معماران مکتب باهاوس از اشکال هندسی ساده برای ساخت سازههای زیبا و پیچیده است. وقتی این اصول را متوجه شوید، تکنیکهای CSS پشت بسیاری از طراحیهای وب را خواهید شناخت.
flowchart LR
A[درپوش شیشه] --> E[تراریوم کامل]
B[دیوارهای شیشه] --> E
C[لایه خاک] --> E
D[پایین شیشه] --> E
F[افکتهای شیشه] --> E
A1["۵۰٪ عرض<br/>۵٪ ارتفاع<br/>موقعیت بالا"] --> A
B1["۶۰٪ عرض<br/>۸۰٪ ارتفاع<br/>گوشههای گرد<br/>شکاف ۰.۵"] --> B
C1["۶۰٪ عرض<br/>۵٪ ارتفاع<br/>قهوهای تیره<br/>لایه پایین"] --> C
D1["۵۰٪ عرض<br/>۱٪ ارتفاع<br/>موقعیت پایین"] --> D
F1["سایههای ظریف<br/>شفافیت<br/>لایهبندی ایندکس Z"] --> F
style E fill:#d1e1df,stroke:#3a241d
style A fill:#e8f5e8
style B fill:#e8f5e8
style C fill:#8B4513
style D fill:#e8f5e8
بیایید شیشه تراریوم را قطعه به قطعه بسازیم. هر قسمت از موقعیتیابی مطلق و اندازهگیری بر اساس درصد برای طراحی واکنشگرا استفاده میکند:
.jar-walls {
height: 80%;
width: 60%;
background: #d1e1df;
border-radius: 1rem;
position: absolute;
bottom: 0.5%;
left: 20%;
opacity: 0.5;
z-index: 1;
box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.1);
}
.jar-top {
width: 50%;
height: 5%;
background: #d1e1df;
position: absolute;
bottom: 80.5%;
left: 25%;
opacity: 0.7;
z-index: 1;
border-radius: 0.5rem 0.5rem 0 0;
}
.jar-bottom {
width: 50%;
height: 1%;
background: #d1e1df;
position: absolute;
bottom: 0;
left: 25%;
opacity: 0.7;
border-radius: 0 0 0.5rem 0.5rem;
}
.dirt {
width: 60%;
height: 5%;
background: #3a241d;
position: absolute;
border-radius: 0 0 1rem 1rem;
bottom: 1%;
left: 20%;
opacity: 0.7;
z-index: -1;
}درک ساخت تراریوم:
- استفاده از ابعاد درصدی برای مقیاسبندی واکنشگرا در همه اندازههای صفحه
- مکانیابی عناصر به صورت مطلق برای چیدن و تراز دقیق آنها
- اعمال مقادیر مختلف شفافیت برای ایجاد اثر شفافیت شیشه
- اجرای لایهبندی
z-indexبرای اینکه گیاهان داخل شیشه نمایش داده شوند - افزودن سایههای ملایم و شعاع مرز ظریف برای ظاهر واقعیتر
توجه کنید که همه ابعاد به جای پیکسل ثابت، بر اساس درصد هستند:
چرا این مهم است:
- تضمین مقیاس متناسب تراریوم در هر اندازه صفحه
- حفظ روابط بصری بین اجزای شیشه
- ایجاد تجربهی یکنواخت از تلفن همراه تا مانیتورهای بزرگ دسکتاپ
- امکان تطبیق طراحی بدون خراب شدن چیدمان بصری
ما از واحد rem برای شعاع مرز استفاده میکنیم که نسبت به اندازه فونت اصلی مقیاس میگیرد. این طراحیهای قابل دسترستر را ایجاد میکند که ترجیحات فونت کاربر را رعایت میکنند. برای اطلاعات بیشتر درباره واحدهای نسبی CSS به مشخصات رسمی مراجعه کنید.
✅ آزمایش بصری: مقادیر را تغییر دهید و اثرات را مشاهده کنید:
- شفافیت شیشه را از 0.5 به 0.8 تغییر دهید — این چگونه ظاهر شیشه را تغییر میدهد؟
- رنگ خاک را از
#3a241dبه#8B4513تغییر دهید — چه تأثیری در ظاهر دارد؟ - مقدار
z-indexخاک را به 2 تغییر دهید — چه اتفاقی در لایهبندی میافتد؟
درک طراحی بصری CSS: درک خود را از طراحی بصری CSS تأیید کنید:
- ✅ چگونه ابعاد بر اساس درصد طراحی واکنشگرا ایجاد میکنند؟
- ✅ چرا شفافیت اثر شفافیت شیشه را ایجاد میکند؟
- ✅ نقش
z-indexدر لایهبندی عناصر چیست؟ - ✅ چگونه مقادیر شعاع مرز شکل شیشه را ایجاد میکنند؟
اصل طراحی: توجه کنید چگونه ما شکلهای پیچیده را از اشکال ساده میسازیم:
- مستطیلها → مستطیلهای گرد → اجزای شیشه
- رنگهای تخت → شفافیت → اثر شیشهای
- عناصر منفرد → ترکیب لایهای → ظاهر سهبعدی
با حالت Agent چالش زیر را کامل کنید:
توضیح: انیمیشن CSS ایجاد کنید که گیاهان تراریوم به آرامی به جلو و عقب تاب بخورند و اثر نسیم طبیعی را شبیهسازی کند. این به شما کمک میکند تمرین انیمیشنها، تبدیلات و فریمهای کلیدی CSS را انجام دهید و جذابیت بصری تراریومتان را افزایش دهید.
دستور: انیمیشنهای فریم کلیدی CSS اضافه کنید تا گیاهان داخل تراریوم آرام به دو طرف تاب بخورند. یک انیمیشن تابخوردن ایجاد کنید که هر گیاه را کمی (2-3 درجه) به چپ و راست میچرخاند با مدت 3-4 ثانیه و آن را به کلاس .plant نسبت دهید. اطمینان حاصل کنید که انیمیشن به صورت نامحدود حلقه زده و تابع تسهیل برای حرکت طبیعی دارد.
اطلاعات بیشتر درباره حالت agent را اینجا بیابید.
آمادهاید تراریوم خود را با بازتابهای شیشهای واقعیتر کنید؟ این تکنیک عمق و واقعنمایی به طراحی اضافه میکند.
شما نقاط برجسته ملایمی ایجاد خواهید کرد که بازتاب نور از سطوح شیشه را شبیهسازی میکند. این روش مشابه نحوه استفاده نقاشان رنسانس مانند جان فان آیک از نور و بازتاب برای واقعی به نظر رسیدن شیشه نقاشی شده است. هدف شما این است:
چالش شما:
- ایجاد اشکال بیضی سفید یا رنگ روشن برای بازتاب شیشه
- قرار دادن آنها به صورت استراتژیک در سمت چپ شیشه
- اعمال شفافیت و اثر محو مناسب برای بازتاب نور واقعی
- استفاده از
border-radiusبرای ایجاد اشکال ارگانیک مانند حباب - آزمایش با گرادیانتها یا سایههای باکس برای واقعنمایی بهتر
CSS ممکن است در ابتدا پیچیده به نظر برسد اما درک این مفاهیم اصلی پایهای محکم برای تکنیکهای پیشرفتهتر فراهم میکند.
زمینههای بعدی یادگیری CSS شما:
- Flexbox — سادهسازی تراز و توزیع عناصر
- CSS Grid — ابزارهای قدرتمند برای ساخت چیدمان پیچیده
- متغیرهای CSS — کاهش تکرار و بهبود نگهداری کد
- طراحی واکنشگرا — تضمین عملکرد خوب سایتها در اندازههای مختلف صفحه
این مفاهیم را با بازیهای جذاب و تعاملی تمرین کنید:
- 🐸 Flexbox Froggy — تسلط بر Flexbox با چالشهای سرگرمکننده
- 🌱 Grid Garden — یادگیری CSS Grid با کاشت هویج مجازی
- 🎯 CSS Battle — تست مهارت CSS با چالشهای برنامهنویسی
برای مبانی کامل CSS این ماژول Microsoft Learn را تکمیل کنید: سبک دادن به برنامه HTML خود با CSS
- باز کردن DevTools و بررسی استایلهای CSS در هر وبسایتی با پنل Elements
- ساخت یک فایل CSS ساده و لینک دادن به صفحه HTML
- تلاش برای تغییر رنگها با روشهای مختلف: هگز، RGB و نام رنگها
- تمرین مدل باکس با افزودن padding و margin به یک div
- تکمیل آزمون پس از درس و مرور مبانی CSS
- سبک دادن به صفحه HTML با فونت، رنگ و فاصلهها
- ساخت چیدمان ساده با flexbox یا grid
- آزمایش انتقالهای CSS برای افکتهای نرم
- تمرین طراحی واکنشگرا با media queries
- تکمیل تمرین استایل دادن تراریوم با خلاقیت
- تسلط بر CSS Grid با ساخت چیدمان گالری عکس
- یادگیری انیمیشنهای CSS برای زنده کردن طراحیها
- بررسی پروسسورهای CSS مانند Sass یا Less
- مطالعه اصول طراحی و اعمال آن در CSS
- تحلیل و بازسازی طراحیهای جالب در اینترنت
- ساخت یک سیستم طراحی وبسایت کاملاً واکنشگرا
- یادگیری CSS-in-JS یا فریمورکهای utility-first مانند Tailwind
- همکاری در پروژههای متنباز با بهبودهای CSS
- تسلط بر مفاهیم پیشرفته CSS مانند properties سفارشی و containment
- ایجاد کتابخانههای کامپوننت قابل استفاده مجدد با CSS ماژولار
- آموزش به دیگران در یادگیری CSS و اشتراک دانش طراحی
timeline
title پیشرفت یادگیری CSS
section پایه (۱۰ دقیقه)
اتصال فایل: لینک دادن CSS به HTML
: درک قواعد cascade
: یادگیری اصول ارثبری
section انتخابگرها (۱۵ دقیقه)
هدفگذاری عناصر: انتخابگرهای عنصر
: الگوهای کلاس
: ویژگی شناسه
: ترکیبکنندهها
section مدل جعبه (۲۰ دقیقه)
اصول چیدمان: حاشیه و فاصله داخلی
: ویژگیهای کادر
: اندازهگیری محتوا
: رفتار box-sizing
section موقعیتیابی (۲۵ دقیقه)
جایگذاری عنصر: استاتیک در مقابل نسبی
: موقعیتیابی مطلق
: لایهبندی Z-index
: واحدهای پاسخگو
section طراحی بصری (۳۰ دقیقه)
تسلط بر استایلدهی: رنگها و شفافیت
: سایهها و افکتها
: انتقالها
: ویژگیهای تبدیل
section طراحی پاسخگو (۴۵ دقیقه)
پشتیبانی چند دستگاهی: کوئریهای رسانهای
: چیدمانهای انعطافپذیر
: رویکرد موبایل اول
: بهینهسازی Viewport
section تکنیکهای پیشرفته (۱ هفته)
CSS مدرن: چیدمانهای Flexbox
: سیستمهای CSS Grid
: ویژگیهای سفارشی
: فریمهای کلیدی انیمیشن
section مهارتهای حرفهای (۱ ماه)
معماری CSS: الگوهای مؤلفه
: کد قابل نگهداری
: بهینهسازی عملکرد
: سازگاری مرورگرهای مختلف
پس از این درس، اکنون شما:
- درک Cascade: چگونه استایلها به ارث میرسند و بر هم تقدم دارند
- تسلط بر Selector ها: هدفگیری دقیق با عناصر، کلاسها و آیدیها
- مهارتهای موقعیتیابی: قرار دادن استراتژیک عناصر و لایهبندی
- طراحی بصری: ایجاد اثرات شیشه، سایه و شفافیت
- تکنیکهای واکنشگرا: چیدمانهای درصدی که با هر صفحهای سازگارند
- سازماندهی کد: ساختار CSS تمیز و قابل نگهداری
- روشهای مدرن: استفاده از واحدهای نسبی و الگوهای طراحی قابل دسترس
قدمهای بعدی: تراریوم شما اکنون هم ساختار (HTML) هم استایل (CSS) دارد. درس نهایی تعاملی بودن با جاوااسکریپت را اضافه خواهد کرد!
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی اشتباهات یا نادرستیهایی باشند. سند اصلی به زبان بومی خود، منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچگونه سوءتفاهم یا تفسیر نادرستی که ناشی از استفاده از این ترجمه باشد، نمیباشیم.



