روشهای افزودن CSS
ممکن است قانونهای CSS را بینقص نوشته باشید و باز هم هیچ تغییری روی صفحه نبینید؛ دلیلش ساده است: مرورگر اصلاً آنها را بارگذاری نکرده. در این جلسه سه روش رایج برای وصل کردن CSS به HTML را میبینید و اینکه کدام را باید پیشفرض خودتان کنید.
چطور CSS را به صفحهٔ HTML اضافه کنیم؟
سه راه دارید: یک stylesheet خارجی که از داخل head به آن لینک میدهید، یک بلوک داخلی <style> در head، یا ویژگی درونخطی style روی یک عنصر. برای سایت واقعی و پروژههای چندصفحهای، با یک فایل .css جدا شروع کنید.
نگاهی سریع به سه روش
پیش از شروع به کدنویسی، با این جدول روش مناسب را انتخاب کنید. در بخشهای بعد برای هر کدام یک مثال کوتاه میبینید.
📊 روشهای افزودن CSS
| روش | کجا قرار میگیرد | استفاده در چند صفحه | بهترین کاربرد |
|---|---|---|---|
| stylesheet خارجی | فایل جدا با پسوند .css و یک <link> در head |
عالی | انتخاب پیشفرض برای پروژهها و همین کورس |
| CSS داخلی | <style> … </style> در head همان صفحه |
فقط همان یک صفحه | دموی سریع و تمرین تکفایلی |
| CSS درونخطی | style="…" روی یک عنصر HTML |
ندارد | اصلاح موقتی و یکباره (کم استفاده کنید) |
stylesheet خارجی (انتخاب پیشفرض)
HTML و CSS را در دو فایل جدا نگه دارید. داخل head با عنصر link به stylesheet اشاره کنید؛ مرورگر فایل CSS را میگیرد و قانونهایش را اعمال میکند.
لینک کردن stylesheet خارجی
html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>How To — External CSS</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1 class="hero">Styled from styles.css</h1>
</body>
</html>
قانونها را در فایل styles.css کنار فایل HTML بنویسید (اگر فایل در زیرپوشه است، href را با مسیر درست عوض کنید):
فایل styles.css
css.hero {
color: #0f766e;
font-family: Georgia, serif;
}
چرا برای کار واقعی روش خارجی بهتر است
- یک stylesheet میتواند ظاهر چندین صفحهٔ HTML را تعیین کند
- برای تغییر ظاهر لازم نیست لابهلای تگها دنبال استایل بگردید
- مرورگر میتواند فایل
.cssرا cache کند و بین صفحهها دوباره نگیرد rel="stylesheet"وhrefدرست را فراموش نکنید؛ یک اشتباه کوچک در مسیر باعث میشود صفحه بدون هیچ پیام خطایی بیاستایل بماند
CSS داخلی (بلوک <style> در head)
برای یک صفحهٔ تمرینی میتوانید قانونها را داخل عنصر <style> در head بنویسید. در جلسههای مقدمه و Syntax هم از همین الگو استفاده کردیم تا HTML و CSS در یک فایل بمانند.
بلوک style داخلی
html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>How To — Internal CSS</title>
<style>
.hero {
color: #1d4ed8;
}
</style>
</head>
<body>
<h1 class="hero">Styled from a style block</h1>
</body>
</html>
چه موقع CSS داخلی مشکلی ندارد
برای دمو یا تکلیفی که باید در یک فایل تحویل شود، CSS داخلی انتخاب درستی است. اما با بزرگتر شدن پروژه جواب نمیدهد: اگر همان بلوک <style> را در همهٔ صفحهها کپی کنید، نسخهها کمکم با هم فرق پیدا میکنند و هر تغییر کوچک باید چندجا انجام شود. بهمحض اینکه بیش از یک صفحه دارید، یا میخواهید کدها مرتبتر باشند، به stylesheet خارجی بروید.
CSS درونخطی (ویژگی style)
در روش درونخطی، declarationها را مستقیم با ویژگی style روی خود عنصر مینویسید. سلکتور و فایل جدایی در کار نیست و فقط همان یک عنصر استایل میگیرد.
ویژگی style درونخطی
html<h1 style="color: #b45309; font-size: 1.75rem;">Styled inline</h1>
کم استفاده کنید
استایل درونخطی برای یک بررسی سریع و موقت راحت است، ولی ظاهر را به داخل ساختار صفحه میکشاند، دوبارهاستفادهکردنش سخت است و وقتی بحث cascade و specificity پیش بیاید، بازنویسی (override) کردنش هم دردسر دارد. ترجیح بدهید از class در stylesheet استفاده کنید. قانونهای تعارض در cascade را در جلسههای بعد میبینید؛ فعلاً درونخطی را استثنا بدانید، نه عادت.
کدام روش را انتخاب کنیم؟
- ساختن سایت یا پروژههای این کورس: stylesheet خارجی
- یک فایل دموی کوتاه در کلاس:
<style>داخلی قابل قبول است - تغییر یک عنصر برای چند ثانیه هنگام دیباگ: درونخطی کمک میکند — بعد قانون را به stylesheet منتقل کنید
استفادهٔ همزمان از چند روش مجاز است. وقتی یک property از چند جا مقدار بگیرد، مرورگر طبق قانونهای cascade تصمیم میگیرد (بعداً توضیح داده میشود). عادت خوبی که میتوانید داشته باشید: استایلهای ثابت را در فایل خارجی نگه دارید و یک property را در هر سه روش پخش نکنید.
خودتان امتحان کنید
- فایلهای
howto.htmlوstyles.cssرا در یک پوشه بسازید. - در
howto.htmlیک head با<link rel="stylesheet" href="styles.css">بگذارید و در body این تیتر را بنویسید:<h1 class="hero">How-to practice</h1>. - در
styles.cssاین قانون را بنویسید:.hero { color: #0f766e; }. بعد فایل HTML را در مرورگر باز کنید. - رنگ را به
#1d4ed8تغییر دهید، فایل CSS را ذخیره کنید و صفحه را تازه کنید؛ رنگ تیتر باید عوض شود. - موقتاً
style="color: #b45309;"را رویh1اضافه کنید و صفحه را تازه کنید. بعد ویژگی را پاک کنید تا دوباره stylesheet کنترل رنگ را به دست بگیرد.
اشتباهات رایج
- از سر عادت گذاشتن
<link rel="stylesheet" …>در body — جایش head است، کنار بقیهٔ اطلاعات سند - غلط تایپی در
href(مثلاًstyle.cssبهجایstyles.css) که باعث میشود فایل هرگز بارگذاری نشود و صفحه بیاستایل بماند - جا انداختن
rel="stylesheet"در عنصرlink - چسباندن یک بلوک کامل
<style>در تکتک صفحهها بهجای استفاده از یک فایل خارجی مشترک - تکیه بر
styleدرونخطی برای همهٔ رنگها و فونتها — HTML شلوغ میشود و نگهداریاش سخت
خلاصه
- سه روش داریم: stylesheet خارجی،
<style>داخلی و ویژگی درونخطیstyle - روش پیشفرض برای صفحههای واقعی: فایل خارجی با
<link rel="stylesheet" href="…">در head - CSS داخلی به درد تمرین تکفایلی میخورد و درونخطی فقط برای اصلاحهای یکباره و نادر
- غلط در مسیر یا جا افتادن
relاز دلایل رایج «بیاثر بودن» استایلهاست - تمرین کنید: یک فایل
.cssواقعی را لینک کنید، یک مقدار را عوض کنید و صفحه را تازه کنید
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود