شرح تفصيلي لأهم قواعد CSS بأسلوب واضح وسهل للطلاب
🎯 الهدف: فهم أساسيات CSS وأهميتها في تصميم المواقع.
🎯 الهدف: التعرف على كيفية استهداف العناصر المختلفة في CSS.
نستخدم محدد الوسم عندما نريد تطبيق الأنماط على جميع العناصر من نفس النوع:
p {
color: blue;
}
يتم هنا تغيير لون النصوص لجميع العناصر من نوع <p> إلى الأزرق. يُفضل استخدام هذا النوع من التحديد عندما نحتاج إلى استهداف عنصر معين مثل العناوين أو الفقرات بشكل عام.
نستخدم الكلاس عندما نريد تطبيق نمط معين على مجموعة من العناصر دون أن تكون جميعها من نفس النوع:
.box {
background: gray;
}
يمكن تطبيق هذا النمط على أي عنصر يحتوي على class="box"
. الكلاس مفيد عند الحاجة إلى إعادة استخدام نفس التنسيقات لعناصر متعددة.
نستخدم الهوية (ID) عندما نحتاج إلى استهداف عنصر فريد في الصفحة:
#header {
font-size: 20px;
}
هذا النمط سيتم تطبيقه فقط على العنصر الذي يحتوي على id="header"
. يُفضل استخدام الهوية للعناصر التي لا تتكرر في الصفحة مثل الرأس أو التذييل.
* {
margin: 0;
padding: 0;
}
div p {
color: red;
}
يتم هنا تغيير لون النصوص للعناصر <p> التي تقع داخل <div> فقط.
h1, h2, p {
margin: 10px;
}
[type="text"] {
width: 100%;
}
🎯 الهدف: تعلم كيفية التحكم بالمظهر العام للنصوص والخلفيات.
يمكننا تحديد الألوان بثلاث طرق:
color: red;
color: #ff0000;
color: rgba(255, 0, 0, 0.5);
font-family: Arial, sans-serif;
font-size: 16px;
font-weight: bold;
background-color: #f0f0f0;
background-image: url('image.jpg');
background-size: cover;
🎯 الهدف: فهم كيفية التحكم في المسافات داخل العناصر.
يتكون نموذج الصندوق من:
.box {
margin: 10px;
padding: 15px;
border: 1px solid black;
width: 200px;
height: 100px;
}
في المثال أعلاه، يتم تحديد الهوامش الخارجية والداخلية بالإضافة إلى الحدود.
padding: 10px 20px;
.🎯 الهدف: تعلم كيفية تنظيم العناصر داخل الصفحة.
div {
display: block;
}
span {
display: inline;
}
.container {
display: flex;
justify-content: center;
align-items: center;
}
text-align: center;
.justify-content: space-between;
.🎯 الهدف: إضافة حركات وتأثيرات على العناصر.
تُستخدم لتطبيق تغييرات تدريجية:
button {
transition: all 0.5s ease-in-out;
}
button:hover {
background-color: blue;
}
إنشاء حركة باستخدام @keyframes
:
@keyframes move {
from { transform: translateX(0); }
to { transform: translateX(100px); }
}
.box {
animation: move 2s infinite;
}
🎯 الهدف: جعل الموقع يعمل على جميع الأجهزة.
تُستخدم لتطبيق أنماط مخصصة حسب حجم الشاشة:
@media (max-width: 768px) {
body {
background-color: lightgray;
}
}
🎯 الهدف: تطبيق ما تعلمه الطلاب في مشاريع عملية.
🎯 الهدف: تعلم أساليب احترافية لتطوير CSS.
:root {
--main-color: blue;
}
h1 {
color: var(--main-color);
}
يُمكن لـ SASS تبسيط كتابة CSS من خلال المتغيرات، التداخل، والمزيد.
الخاصية | الوصف | القيم الممكنة | التأثير |
---|---|---|---|
display | تحديد نوع التخطيط للعناصر | flex / inline-flex | يحول العنصر إلى حاوية Flexbox |
flex-direction | تحديد اتجاه توزيع العناصر داخل الحاوية | row / row-reverse / column / column-reverse | يحدد ما إذا كانت العناصر ستظهر أفقياً أو رأسياً |
flex-wrap | السماح للعناصر بالانتقال إلى سطر جديد عند الحاجة | nowrap / wrap / wrap-reverse | تحكم في التفاف العناصر داخل الحاوية |
justify-content | محاذاة العناصر داخل الحاوية أفقياً | flex-start / flex-end / center / space-between / space-around / space-evenly | يحدد موضع العناصر أفقيًا داخل الحاوية |
align-items | محاذاة العناصر داخل الحاوية عموديًا | flex-start / flex-end / center / baseline / stretch | يحدد موضع العناصر عموديًا داخل الحاوية |
align-self | محاذاة عنصر معين داخل الحاوية | auto / flex-start / flex-end / center / baseline / stretch | تحكم في محاذاة عنصر محدد |
gap | تحديد المسافة بين العناصر | px / em / % | يتحكم في المسافة بين العناصر |
flex-grow | نسبة توسع العنصر داخل الحاوية | 0 (افتراضي) / 1 فأكثر | تحكم في نمو العنصر داخل الحاوية |
flex-shrink | نسبة انكماش العنصر عند تصغير الشاشة | 0 (لا ينكمش) / 1 فأكثر | يحدد ما إذا كان العنصر سينكمش عند الحاجة |
flex-basis | تحديد الحجم الأساسي للعنصر قبل التمدد أو الانكماش | auto / px / % | يحدد حجم العنصر الافتراضي |
order | ترتيب ظهور العنصر | عدد صحيح (موجب أو سالب) | يحدد ترتيب ظهور العنصر داخل الحاوية |
الوحدة | الوصف | مثال | الاستخدام الشائع |
---|---|---|---|
px | وحدة ثابتة مرتبطة بكثافة شاشة العرض | font-size: 16px; | تُستخدم كثيرًا لضبط النص والعناصر |
em | نسبة إلى حجم الخط للأب المباشر | font-size: 1.2em; | تصميم متجاوب جزئيًا |
rem | نسبة إلى حجم الخط الجذري (Root HTML) | font-size: 1.2rem; | تصميم متجاوب وموحّد في جميع أجزاء الصفحة |
% | نسبة إلى العنصر الأب أو الإطار العام | width: 50%; | تصميم متجاوب (عرض عنصر 50% من حاويته) |
vh/vw | نسبة إلى ارتفاع/عرض نافذة العرض (Viewport) | height: 50vh; | تصميم متجاوب ملء نصف ارتفاع النافذة |
الخاصية | الوصف | القيم الممكنة | التأثير |
---|---|---|---|
background-color | تحديد لون الخلفية | اسم لون أو Hex أو RGB/RGBA | يضفي لون خلفية على العنصر |
background-image | إضافة صورة خلفية للعنصر | url('path/to/image.jpg') | يعرض الصورة خلف العنصر |
background-repeat | طريقة تكرار الصورة (أفقيًا أو عموديًا) | repeat, repeat-x, repeat-y, no-repeat | تحكم في تكرار الصورة من عدمه |
background-size | التحكم في حجم الصورة عند عرضها كخلفية | cover, contain, auto, px, % | cover تملأ العنصر بالكامل، contain تُظهر الصورة كاملة ضمن العنصر |
background-position | تحديد مكان عرض الصورة داخل العنصر | left, right, center, px, % | محاذاة الصورة في مكان محدد داخل العنصر |
background-attachment | التحكم في ثبات الخلفية عند التمرير | scroll, fixed, local | fixed تبقى الخلفية ثابتة في الشاشة عند التمرير |
الخاصية | الوصف | القيم الممكنة | التأثير |
---|---|---|---|
border | يحدد كل من سمك الخط ونوعه ولونه | مثال: border: 1px solid #000; | رسم حدود كاملة حول العنصر |
border-style | تحديد نوع الحد | none, solid, dotted, dashed, double... | نوع حدود العنصر (متصل، منقط، مزدوج إلخ) |
border-width | تحديد سمك الحد | thin, medium, thick, px, em | سمك الحد |
border-color | تحديد لون الحد | اسم لون أو Hex أو RGB/RGBA | لون الحد |
border-radius | تحديد مدى استدارة زوايا العنصر | px, % | مثال: border-radius: 50% يجعلها دائرية |
القيمة | المعنى | الاستخدام |
---|---|---|
static | الوضع الافتراضي للعناصر | لا يمكن تحريك العنصر بخصائص top و left وغيرها |
relative | يحرك العنصر نسبة إلى موضعه الأصلي | يسمح بتحريك العنصر دون التأثير على العناصر المجاورة |
absolute | يتم وضع العنصر نسبةً لأقرب عنصر أب محدد الموضع | يسمح بتداخل العناصر وتحديد موقعه داخل حاوية أو الجسم |
fixed | يبقى العنصر ثابتًا عند التمرير | مفيد لإنشاء عناصر ثابتة مثل شريط علوي أو جانبي |
sticky | يجمع بين relative و fixed | يبقى العنصر عاديًا حتى يصل إلى حافة الشاشة فيصبح ثابتًا |
الخاصية | الوصف | القيم | التأثير |
---|---|---|---|
margin | المسافة الخارجية حول العنصر | auto, px, %, em, rem | يضيف مسافة خارجية بين العنصر والعناصر الأخرى |
padding | المسافة الداخلية بين محتوى العنصر وحدوده | px, %, em, rem | يضيف مسافة داخلية حول المحتوى |
margin-top / margin-bottom / margin-left / margin-right | ضبط الهوامش لكل جانب على حدة | نفس القيم بالأعلى | تحكم دقيق في الهوامش لكل جانب |
padding-top / padding-bottom / padding-left / padding-right | ضبط الحشوة لكل جانب على حدة | نفس القيم بالأعلى | تحكم دقيق في المسافات الداخلية لكل جانب |
الخاصية | الوصف | القيم الممكنة | مثال |
---|---|---|---|
text-align | محاذاة النص داخل العنصر | left, right, center, justify | text-align: center; |
text-decoration | إضافة تأثير مثل الخط السفلي للنص | none, underline, overline, line-through | text-decoration: underline; |
text-transform | تغيير حالة الأحرف (كبيرة/صغيرة) | uppercase, lowercase, capitalize, none | text-transform: uppercase; |
letter-spacing | المسافة بين الأحرف | px, em, rem | letter-spacing: 2px; |
word-spacing | المسافة بين الكلمات | px, em, rem | word-spacing: 0.5em; |
line-height | المسافة الرأسية بين سطور النص | رقم نسبي (1.5) أو px, em, rem | line-height: 1.5; |
text-indent | تحريك السطر الأول للنص داخليًا | px, em, rem, % | text-indent: 20px; |
white-space | التحكم في كيفية عرض المساحات والأسطر | normal, nowrap, pre, pre-wrap, pre-line | white-space: nowrap; |
اسم الـ Pseudo-class | الوصف | مثال الاستخدام |
---|---|---|
:hover | عند تمرير مؤشر الفأرة فوق العنصر | button:hover { background: #ccc; } |
:focus | عند تركيز المؤشر على العنصر (حقول الإدخال مثلاً) | input:focus { outline: 2px solid blue; } |
:active | عند الضغط على العنصر (مثل الأزرار) | a:active { color: red; } |
:visited | للروابط التي تمت زيارتها مسبقًا | a:visited { color: purple; } |
:checked | للعناصر القابلة للاختيار مثل checkbox و radio | input[type="checkbox"]:checked { } |
:disabled | للعناصر المعطلة | button:disabled { opacity: 0.5; } |
:nth-child(n) | لاستهداف العنصر حسب ترتيبه بين إخوته | li:nth-child(2) { color: red; } |
العنصر الزائف | الوصف | مثال الاستخدام |
---|---|---|
::before | إضافة محتوى/شكل قبل المحتوى الأصلي للعنصر |
.element::before { content: ""; display: block; width: 10px; height: 10px; background: red; } |
::after | إضافة محتوى/شكل بعد المحتوى الأصلي للعنصر |
.element::after { content: "تم"; color: green; } |
::first-line | تنسيق السطر الأول من الفقرة |
p::first-line { font-weight: bold; font-size: 1.2em; } |
::first-letter | تنسيق الحرف الأول من الفقرة |
p::first-letter { float: right; font-size: 2em; color: red; } |
::selection | تنسيق النص المُظلَّل عند التحديد |
::selection { background: yellow; color: black; } |
الاسم | عينة اللون | كود Hex | RGB |
---|---|---|---|
أحمر | #FF0000 | rgb(255, 0, 0) | |
أخضر | #008000 | rgb(0, 128, 0) | |
أزرق | #0000FF | rgb(0, 0, 255) | |
أصفر | #FFFF00 | rgb(255, 255, 0) | |
برتقالي | #FFA500 | rgb(255, 165, 0) | |
رمادي | #808080 | rgb(128, 128, 128) | |
أسود | #000000 | rgb(0, 0, 0) | |
أبيض | #FFFFFF | rgb(255, 255, 255) |
الخاصية | الوصف | القيم الممكنة | مثال |
---|---|---|---|
transition-property | تحديد الخاصية المراد تطبيق الانتقال عليها | اسم الخاصية أو all |
transition-property: background-color; |
transition-duration | مدة الانتقال | وحدات زمنية (s , ms ) |
transition-duration: 0.5s; |
transition-timing-function | طريقة الحركة (Easing) | ease, linear, ease-in, ease-out, ease-in-out | transition-timing-function: ease-in-out; |
transition-delay | التأخير قبل بدء الحركة | وحدات زمنية (s , ms ) |
transition-delay: 0.2s; |
الخاصية | الوصف | مثال الاستخدام |
---|---|---|
animation-name | اسم الحركة المرتبط بتعليمة @keyframes |
animation-name: move; |
animation-duration | مدة الحركة | animation-duration: 2s; |
animation-timing-function | طريقة تدرج الحركة (Easing) | animation-timing-function: ease-in-out; |
animation-delay | التأخير قبل بدء الحركة | animation-delay: 1s; |
animation-iteration-count | عدد مرات تكرار الحركة | animation-iteration-count: infinite; |
animation-direction | اتجاه الحركة (للأمام، للخلف، بالتناوب) | normal, reverse, alternate, alternate-reverse |
animation-fill-mode | تطبيق الأنماط قبل أو بعد التشغيل الفعلي للحركة | none, forwards, backwards, both |