HTML وCSS: أول خطوة عملية في تطوير الويب
مش هتقرأ عن البرمجة. هتكتب أول صفحة ويب شغالة بإيدك قبل ما تخلص أول جزء من الدليل. HTML وCSS خطوة بخطوة، بمشاريع صغيرة، من غير حشو.
أول سطر كود في عشر دقايق
افتح المفكرة (Notepad) على جهازك دلوقتي. أيوه، المفكرة العادية. انسخ الكود ده فيها واحفظ الملف باسم test.html على سطح المكتب، وبعدين افتحه بالمتصفح:
شفت اللي حصل؟ المتصفح فهم الكود وعرضه كصفحة ويب. السطر الأول بقى عنوان كبير، والتاني بقى فقرة. ده بالظبط اللي بيعمله مطور الويب كل يوم — بيكتب تعليمات، والمتصفح بينفذها. الفكرة كلها إنك بتتكلم لغة المتصفح بيفهمها.
طيب، السؤال اللي في دماغك دلوقتي: “هو الموضوع كله بالسهولة دي؟” — الإجابة الصادقة: البداية سهلة فعلًا، والاحتراف محتاج ممارسة. لكن الخبر الكويس إن المسافة بين “أول سطر” و”صفحة شكلها محترم” أقصر بكتير مما تتخيل. الدليل ده هياخدك في الرحلة دي خطوة بخطوة، وبنهايته هتكون بنيت صفحة بورتفوليو كاملة بإيدك.
HTML وCSS: كل واحد بيعمل إيه بالظبط؟
قبل ما نغوص، لازم الصورة تبقى واضحة في دماغك. أي صفحة ويب في العالم مبنية من تلات طبقات. انت هتتعلم أول طبقتين — وهما الأساس اللي كل حاجة تانية بتتبني عليه.
| الطبقة | اللغة | وظيفتها | تشبيه بسيط |
|---|---|---|---|
| المحتوى والهيكل | HTML | بتحدد إيه اللي موجود في الصفحة: عناوين، فقرات، صور، روابط، أزرار | هيكل البيت والطوب — الجدران والأبواب والشبابيك |
| الشكل والتنسيق | CSS | بتحدد الشكل: الألوان، الخطوط، المسافات، التوزيع على الصفحة | الدهان والديكور والأثاث — اللي بيخلي البيت شكله حلو |
| التفاعل والسلوك | JavaScript | بتخلي الصفحة تتفاعل: قوائم بتتفتح، أزرار بتنفذ أوامر، بيانات بتتحدث | الكهربا والأجهزة — اللي بيخلي البيت “عايش” |
المشكلة إن ناس كتير بتبدأ من الطبقة التالتة (JavaScript) قبل ما تفهم الأولى والتانية، فبتتعثر وتفتكر إن البرمجة صعبة. الحقيقة إن الصعوبة مش في البرمجة — الصعوبة إنك بدأت من السلم الغلط. HTML وCSS هما السلم الصح.
HTML: لغة الوصف مش لغة البرمجة
HTML اختصار HyperText Markup Language — لغة توصيف النص التشعبي. خلّي بالك من كلمة “توصيف” (Markup) مش “برمجة” (Programming). انت مش بتكتب أوامر منطقية ولا معادلات — انت بتوصّف للمتصفح: “السطر ده عنوان، والفقرة دي نص عادي، والصورة دي حطها هنا”.
الوصف بيتم بوسوم (Tags). الوسم له شكل ثابت: بيفتح بـ <h1> وبيقفل بـ </h1>، واللي بينهم هو المحتوى. معظم عناصر HTML ماشية على نفس النمط ده — وده معناه إنك لو فهمت الفكرة مرة واحدة، هتفهم 90% من اللغة.
CSS: لغة الشكل
CSS اختصار Cascading Style Sheets — أوراق الأنماط المتتالية. وظيفتها الوحيدة: الشكل. بتقول للمتصفح: “العنوان ده لونه أزرق وحجمه كبير، والفقرة دي خطها مريح، والصورة دي في النص”.
القاعدة في CSS بسيطة: بتختار العنصر (Selector)، وبعدين بتحدد الخصائص (Properties) والقيم (Values). مثال:
الكود ده بيقول: “كل عنوان h1 لونه أزرق وحجمه 32 بكسل”. شايف البساطة؟ انت بتختار مين (h1)، وبتقول عاوزه يبقى شكله إزاي. مفيش منطق معقد، مفيش خوارزميات. وصف شكلي مباشر.
ليه HTML وCSS هما البداية الصح؟
سؤال منطقي: ليه مضيّعش وقت وأبدأ بلغة “حقيقية” زي بايثون أو JavaScript على طول؟ الإجابة فيها خمس أسباب عملية، مش كلام تسويقي:
1. نتيجة فورية تشجعك تكمل
تكتب سطرين، تفتح المتصفح، تشوف النتيجة قدامك. مفيش لغة برمجة تانية بتديك الإحساس ده بالسرعة دي. والدافع في البداية أهم من أي منهج.
2. مفيش حاجة تتثبت ولا بيئة معقدة
أي جهاز فيه متصفح ومفكرة كفاية. مش محتاج تسطيب ولا إعدادات ولا حسابات. العائق التقني صفر.
3. أساس كل مسارات الويب
عاوز تبقى Front-End؟ لازمهم. Back-End؟ هتحتاج تفهمهم عشان تتعامل مع الواجهات. ووردبريس؟ هتحتاجهم عشان تعدّل القوالب. مفيش مفر منهم.
4. سوق شغل حقيقي
تعديل القوالب، صفحات الهبوط، تحسين مواقع ووردبريس، التحويل من تصميم لكود — كلها خدمات مطلوبة وبتتباع، وكلها HTML وCSS في الأساس.
5. بتتعلم “التفكير البصري”
هتتعلم تشوف أي صفحة وتفككها في دماغك: ده عنوان، ده عمودين، دي مسافة. المهارة دي هي اللي بتفرّق المطور عن اللي حافظ كود.
6. بوابة JavaScript الطبيعية
لما توصل لـ JavaScript هتلاقي نفسك بتتعامل مع عناصر HTML وبتنسقها بـ CSS. اللي اتعلم الاتنين الأول بيفهم JavaScript أسرع بكتير.
والنقطة الأهم: HTML وCSS بيعلموك عادة البناء. البرمجة في جوهرها مش حفظ — البرمجة إنك تبني حاجة شغالة. واللغتين دول بيخلوك تبني من أول يوم، فبتتعود على أهم عادة في المجال كله.
جهّز عدّتك في ربع ساعة
قبل أول درس حقيقي، جهّز بيئة الشغل. الموضوع أبسط مما تتخيل — تلات حاجات بس:
- محرر كود (Code Editor): نزّل Visual Studio Code — مجاني، وهو المعيار اللي أغلب المطورين بيستخدموه. بييجي مع تلوين تلقائي للكود وإكمال تلقائي بيوفر عليك أخطاء كتير. البدائل الموجودة كتير، لكن VS Code هو الاختيار الآمن للمبتدئ.
- متصفح حديث: Chrome أو Edge أو Firefox — أي واحد شغال. المهم تعرف تفتح “أدوات المطور” (بتدوس F12) لأنها هتبقى أهم أداة عندك في رحلة CSS. هنتكلم عنها بالتفصيل.
- مجلد للمشاريع: اعمل مجلد على جهازك سميه
web-projects، وجواه مجلد لكل مشروع. التنظيم من أول يوم عادة هتشكر نفسك عليها بعدين.
أدوات المطور: سلاحك السري
دوس F12 في المتصفح دلوقتي على أي موقع. اللي اتفتح ده اسمه DevTools — أدوات المطور. دي أهم حاجة هتتعلمها في CSS، وأهم من أي كورس. منها تقدر:
- تشوف كود HTML لأي صفحة في العالم وتفهم مبنية إزاي
- تجرّب تغيير أي لون أو مقاس وتشوف النتيجة لحظيًا من غير ما تحفظ حاجة
- تعرف بالظبط ليه عنصر معين شكله كده ومين اللي بيأثر عليه من قواعد CSS
القاعدة: لما حاجة في التنسيق متظبطش، أول حاجة تعملها تفتح الـ Inspector وتشوف. مش تخمن، مش تجرب عشوائي — تشوف. المحترفين بيعملوا كده كل يوم، وانت هتعمل كده من أول أسبوع.
السطر الأول بيقول للمتصفح “ده ملف HTML5”. وسم <head> فيه معلومات عن الصفحة مش بتظهر (العنوان اللي في تاب المتصفح، ترميز الحروف). وسم <body> فيه كل اللي القارئ بيشوفه. احفظ الهيكل ده — هو البداية الرسمية لأي صفحة.
HTML: الهيكل — المشروع الأول
HTML فيه حوالي 100 عنصر، لكن الحقيقة المريحة: انت محتاج 20 عنصر بس عشان تبني 95% من الصفحات. الباقي هتقابله تدريجيًا. خلينا نبدأ بالأساسيات اللي هتستخدمها النهاردة:
| العنصر | وظيفته | مثال الاستخدام |
|---|---|---|
<h1> لحد <h6> |
العناوين بدرجاتها — h1 أهم عنوان في الصفحة | عنوان المقال، اسمك في البطاقة الشخصية |
<p> |
الفقرات النصية | أي نص عادي — الوصف، النبذة، التفاصيل |
<a> |
الروابط — أهم اختراع في الويب | رابط حسابك، رابط صفحة تانية |
<img> |
الصور | صورتك الشخصية، صور المشاريع |
<ul> و <ol> |
القوائم — غير مرتبة ومرتبة | قائمة المهارات، خطوات، مميزات |
<div> و <span> |
حاويات للتجميع والتنسيق | تقسيم الصفحة لمناطق عشان تنسقها بـ CSS |
<button> |
الأزرار | زر “تواصل معايا”، زر تحميل السيرة الذاتية |
<header> / <main> / <footer> |
عناصر دلالية لتقسيم الصفحة | ترويسة، المحتوى الرئيسي، تذييل الصفحة |
المشروع الأول: بطاقتك الشخصية
افتح ملف جديد في VS Code، احفظه باسم card.html جوه مجلد المشاريع، واكتب الكود ده بنفسك — مش نسخ ولصق:
افتح الملف في المتصفح. مبروك — دي صفحة ويب حقيقية بمحتوى منظم: عنوان رئيسي، فقرة تعريفية، عنوان فرعي، قائمة مهارات، ورابط تواصل. شكلها بسيط؟ أيوه. لكن الهيكل صح 100%، والهيكل الصح هو اللي بيتبني عليه كل حاجة بعد كده.
قواعد ذهبية في كتابة HTML
- وسم h1 مرة واحدة بس في الصفحة: هو العنوان الرئيسي. العناوين الفرعية h2، واللي تحتها h3. الترتيب الهرمي ده مهم لمحركات البحث وقارئات الشاشة.
- اقفل كل وسم بتفتحه:
<p>لازم يتقفل بـ</p>. النسيان هنا من أشهر أسباب “الصفحة بايظة ومش عارف ليه”. - الصور لازم لها وصف بديل: خاصية
altفي وسم<img>بتوصف الصورة للي مش شايفها ولمحركات البحث. متسيبهاش فاضية أبدًا. - استخدم العناصر الدلالية:
<header>للترويسة و<nav>للتنقل و<main>للمحتوى — مش كله<div>. الكود الواضح أسهل في الصيانة وأحسن في الـ SEO. - الروابط النسبية للملفات المحلية: لو عندك صفحة تانية اسمها
about.htmlفي نفس المجلد، الرابط يبقىhref="about.html"— مش المسار الكامل على جهازك.
<img> مع alt مناسب، وضيف قسم “هواياتي” بقائمة مرتبة <ol>. لو عرفت تعمل ده من غير ما ترجع للشرح، يبقى فهمت الدرس فعلًا.CSS: الشكل — أول تنسيق حقيقي
قبل ما نكتب، افهم التلات طرق لربط CSS بالصفحة — وهتستخدم واحدة منهم على طول:
| الطريقة | إزاي | إمتى تستخدمها |
|---|---|---|
| ملف خارجي | <link rel="stylesheet" href="style.css"> في الـ head |
دايمًا — دي الطريقة الاحترافية لأي مشروع حقيقي |
| داخل الصفحة | وسم <style> جوه الـ head |
للتجارب السريعة وصفحات التجربة الواحدة |
| مباشر على العنصر | خاصية style="..." على الوسم نفسه |
نادرًا — للاستثناءات السريعة بس، مش أسلوب شغل |
اعمل ملف جديد اسمه style.css في نفس مجلد card.html، واربطه في الـ head بتاع الصفحة بالسطر ده:
أول قواعد تنسيق: المحددات (Selectors)
المحدد هو “مين اللي هينطبق عليه التنسيق”. فيه تلاتة أساسيين لازم تتقنهم قبل أي حاجة:
الفرق بينهم ببساطة: محدد العنصر (h1) بيأثر على كل العناوين من النوع ده في الصفحة. الكلاس (.card — بنقطة في الأول) بتديه لأي عناصر عاوزها تاخد نفس الشكل، وممكن يتكرر. الـ ID (#main-title — بشباك في الأول) لعنصر واحد فريد في الصفحة كلها.
هننسق صفحة البطاقة دلوقتي
اكتب الكود ده في ملف style.css واحفظ، وبعدين اعمل Refresh للصفحة في المتصفح:
حدّث الصفحة. شايف الفرق؟ نفس الـ HTML بالظبط — ولا حرف اتغير فيه — لكن الصفحة بقت شكلها مختلف تمامًا. دي قوة CSS: الفصل بين المحتوى والشكل. غيّر أي لون أو مقاس في ملف الـ CSS، والمحتوى ثابت. المبدأ ده هو اللي بيخلي المواقع الكبيرة تتدار بسهولة.
أهم خصائص CSS اللي هتستخدمها كل يوم
CSS فيه مئات الخصائص، لكن دول الـ 15 اللي هتستخدمهم في 90% من شغلك. احفظهم بالتجربة مش بالحفظ:
| الخاصية | بتعمل إيه | مثال |
|---|---|---|
color |
لون النص | color: #be123c; |
background |
لون أو صورة الخلفية | background: #f4f7ff; |
font-size |
حجم الخط | font-size: 18px; |
font-weight |
سُمك الخط (عادي / عريض) | font-weight: bold; |
text-align |
محاذاة النص | text-align: center; |
margin |
مسافة خارجية حوالين العنصر | margin: 20px; |
padding |
مسافة داخلية جوه العنصر | padding: 16px; |
border |
إطار حوالين العنصر | border: 1px solid #ccc; |
border-radius |
تدوير زوايا الإطار | border-radius: 12px; |
width / height |
العرض والارتفاع | width: 300px; |
max-width |
أقصى عرض مسموح | max-width: 800px; |
display |
طريقة عرض العنصر | display: flex; |
box-shadow |
ظل حوالين العنصر | box-shadow: 0 4px 12px rgba(0,0,0,.1); |
line-height |
المسافة بين سطور النص | line-height: 1.8; |
text-decoration |
زخرفة النص (خط تحته إلخ) | text-decoration: none; |
الألوان في CSS: اختار طريقتك
فيه أربع طرق لكتابة الألوان، وكلهم شغالين. الأهم إنك تختار طريقة وتلتزم بيها في مشروعك:
- الأسماء:
red،blue،white— سهلة لكن محدودة (حوالي 140 لون بس). - HEX:
#0d6efd— الأكثر استخدامًا في الشغل الحقيقي. 6 خانات: كل اتنين بيمثلوا الأحمر والأخضر والأزرق. - RGB:
rgb(13, 110, 253)— نفس فكرة الـ HEX بس بأرقام عشرية من 0 لـ 255. - RGBA:
rgba(13, 110, 253, 0.5)— زي RGB بس مع خانة رابعة للشفافية من 0 لـ 1.
نصيحة عملية: استخدم الـ HEX للألوان الأساسية في مشروعك، والـ RGBA لما تحتاج شفافية (زي الظلال والطبقات فوق الصور). ولو عاوز تختار ألوان متناسقة من غير ما تكون مصمم، أي أداة Color Palette على النت هتديك مجموعات جاهزة — انسخ الكود والصقه.
Box Model: المفهوم اللي بيحل 80% من مشاكل التنسيق
الفكرة ببساطة: كل عنصر في الصفحة هو صندوق (Box). والصندوق ده مكوّن من أربع طبقات من بره لجوه — أو من جوه لبره حسب ما تحب تتخيلها:
- المحتوى (Content): النص أو الصورة نفسها — المنطقة اللي فيها الحاجة الفعلية. بتتحكم في حجمها بـ width وheight.
- الحشو الداخلي (Padding): مسافة بين المحتوى وحدود الصندوق. لما تعمل padding لزر، النص بيبعد عن أطراف الزر من جوه.
- الإطار (Border): الخط اللي حوالين الصندوق. ممكن يبقى ظاهر أو شفاف، سميك أو رفيع.
- الهامش الخارجي (Margin): المسافة بين الصندوق ده والصندوق اللي جنبه. بيفصل العناصر عن بعض من بره.
شوف الكود ده وتخيل الصندوق:
العرض الكلي اللي العنصر هياخده في الصفحة = 200 (محتوى) + 40 (padding يمين وشمال) + 4 (border يمين وشمال) = 244px. الـ margin مش بيتحسب جوه العرض، هو مسافة خارجية.
width: 50% لعنصرين جنب بعض، وتتفاجئ إنهم مش جنب بعض! السبب: الـ padding والـ border بيزودوا على العرض. الحل السحري اللي كل المحترفين بيستخدموه — سطر واحد في أول ملف CSS:السطر ده بيقول للمتصفح: “لما أقول width: 200px، يبقى 200px شامل الـ padding والـ border”. بيخلّي الحسابات منطقية وبيمنع 90% من مشاكل “العناصر مش راضية تقعد جنب بعض”. حطه في أول أي ملف CSS هتكتبه في حياتك.
Margin ولا Padding؟ القاعدة اللي تحسمها
ده السؤال اللي بيحيّر كل مبتدئ. القاعدة البسيطة:
- عاوز مسافة جوه العنصر (النص يبعد عن أطراف الزر أو البطاقة) → Padding
- عاوز مسافة بين عنصرين (البطاقة تبعد عن البطاقة اللي تحتها) → Margin
مثال عملي: بطاقة فيها عنوان ونص — الـ padding هو اللي بيخلي النص مش لازق في حرف البطاقة. وبين البطاقة والبطاقة اللي بعدها — الـ margin هو اللي بيعمل المسافة. لما تفكر بالطريقة دي، القرار بيبقى تلقائي.
توسيط العناصر: الحالات الشائعة
توسيط عنصر في النص من أكتر الحاجات اللي المبتدئ بيضيع فيها وقت. احفظ الحالتين دول:
لاحظ الشرط المهم: margin: 0 auto بتشتغل بس لو العنصر له عرض محدد (width). من غير width، العنصر واخد العرض كله أصلًا فمفيش حاجة تتوسّط. التفصيلة الصغيرة دي بتحل لغز كبير لناس كتير.
Flexbox: رصّ العناصر زي المحترفين
الفكرة: بتحوّل العنصر الأب لـ “حاوية مرنة” بكلمة واحدة display: flex، والأبناء جواه بيترصوا تلقائيًا. وبعدين بتتحكم في التوزيع بخاصيتين بس:
justify-content: التوزيع على المحور الرئيسي
دي أشهر خاصية في Flexbox. بتحدد العناصر تتوزع إزاي في المساحة الفاضية:
| القيمة | النتيجة | تستخدمها إمتى |
|---|---|---|
flex-start |
العناصر متجمعة في الأول | الوضع الافتراضي — قائمة عادية |
center |
العناصر متجمعة في النص | توسيط مجموعة أزرار أو أيقونات |
flex-end |
العناصر متجمعة في الآخر | أزرار في آخر سطر |
space-between |
أول عنصر في الأول وآخر عنصر في الآخر والباقي متوزع | شريط علوي: اللوجو يمين والقائمة شمال |
space-around |
مساحة متساوية حوالين كل عنصر | توزيع مريح لبطاقات أو أيقونات |
space-evenly |
مساحات متساوية تمامًا بين كل العناصر والأطراف | أدق توزيع متساوي |
align-items: التوزيع على المحور العمودي
لو العناصر أطوالها مختلفة، align-items بتحدد هيتصرفوا إزاي رأسيًا: stretch (الافتراضي — يتمددوا لقد بعض)، center (في النص)، flex-start (فوق)، flex-end (تحت). جرّبهم بنفسك في الـ DevTools وشوف الفرق بعينك — دي أسرع طريقة للفهم.
مثال عملي: شريط علوي (Navbar) بـ Flexbox
ده أكتر مكوّن هتبنيه في حياتك كمطور. الـ HTML:
والـ CSS:
لاحظ حاجتين: space-between حطّ اللوجو في ناحية والروابط في الناحية التانية تلقائيًا. وgap عملت مسافة بين الروابط من غير ما نحسب margins يدويًا. ده Flexbox — بيخلّي التوزيع “يتحل لوحده”.
الموبايل أولًا: التجاوب الحقيقي
والخبر الكويس: التجاوب أسهل مما تتخيل. القاعدة الذهبية: صمّم للموبايل الأول، وبعدين وسّع للشاشات الكبيرة — مش العكس. ليه؟ لأن إضافة مساحة أسهل بكتير من ضغط تصميم كبير في شاشة صغيرة.
الـ Viewport: السطر اللي ناس كتير بتنساه
أي صفحة متجاوبة لازم يبقى فيها السطر ده في الـ head — من غيره الموبايل هيعرض الصفحة كأنها شاشة كمبيوتر مصغرة:
السطر ده بيقول للموبايل: “اعتبر عرض الصفحة هو عرض شاشتك الحقيقي”. كل الهياكل اللي بنيناها في الدليل ده فيها السطر ده — لاحظته؟
Media Queries: غيّر التنسيق حسب الشاشة
الـ Media Query بتقول للمتصفح: “القواعد دي طبّقها بس لو الشاشة بالمواصفات دي”. أشهر استخدام: لما الشاشة تصغر عن حد معين، غيّر التوزيع:
شايف المنطق؟ الافتراضي (اللي بيتكتب الأول) هو تصميم الموبايل: عمود واحد. وبعدين الـ Media Query “بتضيف” تحسينات للشاشات الأكبر. ده هو الـ Mobile-First بالظبط — مش مجرد شعار، دي طريقة كتابة الكود نفسه.
نقاط التوقف (Breakpoints) العملية
متعقدش نفسك بعشرات المقاسات. في الشغل الحقيقي، نقطتين كفاية لمعظم المشاريع:
| النقطة | الكود | بتغطي إيه |
|---|---|---|
| التابلت | @media (min-width: 768px) |
من التابلت وطالع — عمودين بدل عمود واحد |
| الديسكتوب | @media (min-width: 1024px) |
الشاشات الكبيرة — 3 أعمدة والتوزيع الكامل |
القاعدة: متزودش Breakpoints إلا لو التصميم فعلًا محتاج. كل Breakpoint زيادة = كود زيادة = صيانة أصعب. البساطة هنا ميزة مش نقص.
وحدات مرنة بدل البكسل الثابت
من أسباب كسر التصميم على الموبايل: عرض ثابت بالبكسل أكبر من الشاشة. الحلول المرنة:
- النسب المئوية:
width: 100%— العنصر بياخد عرض الأب مهما كانت الشاشة. - max-width:
max-width: 800px; width: 100%— بيكبر لحد حد معين وبعدين يقف. دي أشهر تركيبة في المواقع. - الصور المرنة:
img { max-width: 100%; height: auto; }— السطرين دول بيمنعوا أي صورة إنها تخرج بره شاشة الموبايل. حطهم في كل مشروع.
مشروعك الأول الكامل: صفحة بورتفوليو
هنبنيه على مراحل. كل مرحلة بتستخدم اللي اتعلمته. ابدأ بملف portfolio.html جديد:
المرحلة 1: الهيكل الكامل
المرحلة 2: التنسيق الكامل
دلوقتي ملف portfolio.css — لاحظ إنه بيجمع كل المفاهيم: Box Model، Flexbox، والتجاوب:
شغّل الصفحة وجرّبها على الموبايل والديسكتوب. دي صفحة بورتفوليو حقيقية: شريط علوي بتوزيع Flexbox، قسم ترحيبي بخلفية متدرجة، بطاقات أعمال بتترص جنب بعض على الشاشات الكبيرة وفوق بعض على الموبايل، ونموذج تواصل منسق. كل ده بـ HTML وCSS بس — من غير أي مكتبات.
النماذج والجداول: عناصر عملية
النموذج: أكتر من مجرد حقول
النموذج الصح مش مجموعة حقول مرمية — له بنية واضحة: تسميات (Labels) مربوطة بالحقول، أنواع حقول مناسبة، وزر إرسال واضح. شوف المثال:
تلات تفاصيل بتفرّق النموذج الاحترافي عن العشوائي:
- الـ label مربوط بالحقل: خاصية
forفي الـ label بتساويidالحقل. ده بيخلي الضغط على النص يفعّل الحقل — ومهم جدًا لقارئات الشاشة. - نوع الحقل الصح:
type="email"بيخلي الموبايل يطلّع كيبورد فيه @، وtype="tel"بيطلّع كيبورد أرقام. تفصيلة صغيرة بتفرق في تجربة المستخدم. - خاصية required: بتخلي المتصفح نفسه يمنع الإرسال لو الحقل فاضي — تحقق مجاني من غير JavaScript.
الجداول: للبيانات مش للتوزيع
قاعدة مهمة: الجداول للبيانات الجدولية (أسعار، مقارنات، إحصائيات) — مش لتوزيع عناصر الصفحة. زمان كانوا بيستخدموها للتخطيط، وده بقى من الماضي. للتخطيط عندك Flexbox.
<th> لخلايا العناوين (بتظهر عريضة وفي النص افتراضيًا)، و<td> لخلايا البيانات. وبتنسيق CSS بسيط — حدود فاتحة وصفوف ملونة بالتناوب — الجدول بيبقى شكله محترم زي الجداول اللي شفتها في الدليل ده.
علاقتهم بالووردبريس والشغل الحقيقي
ووردبريس بيولّد HTML وCSS تلقائيًا — أي صفحة ووردبريس في الآخر هي ملف HTML بتنسيق CSS. الفرق إنك مش بتكتبه بإيدك. لكن لما تحتاج:
- تعديل تصميم القالب: لون زر، مقاس عنوان، مسافة بين أقسام — كلها CSS مباشر. من غيره هتفضل محبوس في اختيارات القالب.
- إضافة عنصر مخصص: صندوق مميز، جدول أسعار، قسم أسئلة شائعة بتصميم خاص — ده HTML وCSS بتكتبه في محرر المخصصات.
- إصلاح مشكلة في العرض: عنصر خارج عن الشاشة على الموبايل، تنسيق متكسر بعد تحديث — اللي فاهم Box Model بيحلها في دقايق.
- تحسين السرعة: فهمك للكود بيخليك تعرف إيه اللي بيبطّئ الصفحة وإزاي تخففه.
ولو عاوز تتعمق في تطوير مواقع ووردبريس نفسها كمسار — من التثبيت لحد التخصيص الكامل — هتلاقي دليل تطوير مواقع ووردبريس على الموقع بيكمل الصورة من ناحية المنصة، والدليل ده بيكملها من ناحية الكود.
خدمات HTML/CSS اللي بتتباع فعلًا
خلينا نتكلم بصراحة عن الفلوس. المهارات دي لوحدها بتفتح أبواب خدمات مطلوبة:
| الخدمة | إيه المطلوب | ليه مطلوبة |
|---|---|---|
| صفحات الهبوط | صفحة واحدة بتصميم مقنع ومتجاوب | أصحاب المنتجات والكورسات محتاجينها باستمرار للحملات |
| تعديل قوالب ووردبريس | CSS مخصص وتعديلات على القالب | أصحاب المواقع عاوزين شكل مميز من غير ما يغيروا القالب كله |
| تحويل تصميم لكود | تاخد صورة تصميم وتحولها لصفحة شغالة | المصممين كتير بيحتاجوا حد ينفذ تصميماتهم |
| إصلاح مشاكل العرض | تشخيص وإصلاح تنسيق متكسر | مشاكل الموبايل والتوافقية شائعة ومحتاجة حد فاهم |
| تحسين السرعة والموبايل | تنظيف CSS وتحسين التجاوب | السرعة بتأثر على الترتيب والمبيعات مباشرة |
أخطاء بيقع فيها كل مبتدئ
- نسيان إغلاق الوسوم: تفتح
<div>وتنسى</div>، فالصفحة كلها تتلخبط. الحل: VS Code بيقفل الوسوم تلقائيًا — استخدمه. ولو الصفحة بايظة، أول حاجة تدور عليها: وسم مفتوح من غير قفل. - استخدام div لكل حاجة: صفحة كلها
<div>في<div>. الكود بيبقى صعب القراءة والفهم. الحل: استخدم العناصر الدلالية —<header>،<nav>،<main>،<section>،<footer>. - التنسيق المباشر على العناصر (Inline Styles): كتابة
style="..."على كل وسم. في الأول مريح، وبعدين بيبقى كابوس صيانة. الحل: كل التنسيقات في ملف CSS خارجي — من غير استثناءات إلا للضرورة. - تجاهل الـ box-sizing: عناصر مش راضية تقعد جنب بعض والمقاسات مش محسوبة صح. الحل:
* { box-sizing: border-box; }في أول الملف — دايمًا. - عرض ثابت بالبكسل على الموبايل:
width: 900pxلعنصر، فيخرج بره الشاشة على الموبايل. الحل:max-widthمعwidth: 100%، والصورmax-width: 100%. - نسيان الـ viewport: الصفحة متجاوبة بالكود لكن الموبايل عارضها مصغرة. الحل: سطر الـ viewport في الـ head — اتأكد إنه موجود في كل صفحة.
- أسماء كلاسات عشوائية:
.box1،.test،.aaa— بعد أسبوع مش هتعرف ده كان إيه. الحل: أسماء وصفية بالإنجليزية —.navbar،.work-card،.btn-primary. - الإفراط في !important: لما تنسيق مش شغال، الحل السهل
!important. المشكلة إنه بيكسر ترتيب الأولويات وبيخلّي أي تعديل بعده أصعب. الحل: افهم الـ Specificity (الأولوية) بدل ما تهرب منها — المحدد الأدق بيكسب. - عدم اختبار على الموبايل: بتبني على شاشة كبيرة وتتفاجئ بالنتيجة على الموبايل. الحل: اختبر كل صفحة على عرض الموبايل أثناء البناء مش في الآخر.
- حفظ الكود من غير فهم: نسخ أمثلة من النت ولصقها من غير ما تفهم كل سطر بيعمل إيه. الحل: أي كود تنسخه، اقرأه سطر سطر وغيّر فيه وجرّب — لحد ما تبقى عارف وظيفة كل جزء.
!important علامة على إنك محتاج تراجع ترتيب المحددات مش إنك محتاج “قوة أكبر”.
خطة 30 يوم: من الصفر لأول مشروع
-
اليوم 1-3: الأساسيات
جهّز VS Code والمجلدات. اتعلم هيكل صفحة HTML والعناصر الأساسية (عناوين، فقرات، روابط، صور، قوائم). ابنِ صفحة تعريفية بسيطة من غير أي تنسيق.
-
اليوم 4-7: أول CSS
المحددات التلاتة (عنصر، كلاس، ID). أهم 15 خاصية. الألوان والخطوط. نسّق صفحة البطاقة بتاعتك لحد ما شكلها يعجبك.
-
اليوم 8-10: Box Model
الفرق بين margin وpadding بالتجربة.
box-sizing: border-box. التوسيط. ابنِ 3 بطاقات مختلفة كل واحدة بتنسيق مختلف. -
اليوم 11-14: Flexbox
justify-content وalign-items وgap. ابنِ شريط علوي، وصف بطاقات جنب بعض، وفوتر بسيط. جرّب كل قيم التوزيع.
-
اليوم 15-17: التجاوب
الـ viewport والـ media queries. حوّل مشاريعك القديمة لمتجاوبة. اختبر كل حاجة على عرض الموبايل.
-
اليوم 18-20: النماذج والجداول
نموذج تواصل كامل ومنسق. جدول أسعار أو مقارنة. اتعلم الـ labels والتحقق الأساسي.
-
اليوم 21-25: المشروع الكبير
ابنِ صفحة البورتفوليو الكاملة من الدليل ده — بس بشخصيتك وألوانك ومحتواك. ده أهم مشروع في الخطة.
-
اليوم 26-28: مشروع ثاني
صفحة هبوط لمنتج وهمي (كورس، تطبيق، خدمة). طبّق كل اللي اتعلمته من غير ما ترجع للشرح إلا للضرورة.
-
اليوم 29-30: المراجعة والنشر
راجع كل مشاريعك وصلّح العيوب. انشر البورتفوليو على استضافة مجانية (GitHub Pages مثلًا). اكتب ملخص للي اتعلمته.
قواعد الالتزام بالخطة
- الكود يتكتب مش يتقرأ: كل مثال في أي مصدر، اكتبه بنفسك. القراءة السلبية أكبر مضيعة وقت في تعلم البرمجة.
- مشروع كل أسبوع: حتى لو صغير. المشاريع هي اللي بتثبت المهارة وهي اللي هتعرضها بعدين.
- الـ DevTools صاحبك: أي حاجة مش فاهمها، افتح الـ Inspector والعب فيها. التجربة المباشرة أسرع من السؤال.
- متقفزش لخطوة قبل ما تتقن اللي قبلها: Flexbox قبل التجاوب، والتجاوب قبل المشروع الكبير. الترتيب ده مقصود.
- اليوم اللي تفوته عوّضه: مش لازم الكمال — الاستمرارية أهم. ساعة واحدة أحسن من صفر.
جاهز تبدأ فعلًا؟
افتح VS Code دلوقتي واعمل ملف card.html من أول الدليل. أول صفحة هتبنيها النهاردة — مش بكره.
اكتب أول سطر كود النهاردة
مصادر موثقة للتعلم
| المصدر | إيه اللي هتلاقيه | اللغة | التكلفة |
|---|---|---|---|
| Elzero Web School — كورس HTML كامل | شرح عربي مفصل لـ HTML من الصفر مع تطبيقات وتكليفات بعد كل مجموعة دروس | عربي | 100% Free |
| Elzero Web School — كورس CSS كامل | شرح عربي شامل لـ CSS: المحددات، Box Model، Flexbox، والتجاوب — مع تكليفات عملية | عربي | 100% Free |
| Elzero Web School — قوالب HTML وCSS عملية | بناء قوالب مواقع كاملة خطوة بخطوة — أفضل تدريب عملي بعد الكورسين الأساسيين | عربي | 100% Free |
| freeCodeCamp — Responsive Web Design | منهج تفاعلي: بتبني مشاريع حقيقية (تطبيق صور قطط، معرض صور، تصميم مجلة) وانت بتتعلم | إنجليزي | 100% Free |
| The Odin Project — Foundations | مسار متكامل يبدأ من إزاي الويب بيشتغل لحد HTML وCSS وFlexbox — بمشاريع حقيقية زي صفحة هبوط | إنجليزي | 100% Free |
| web.dev — Learn HTML | كورس HTML من فريق جوجل: من البنية الأساسية لحد العناصر الدلالية والنماذج — مرجع موثوق | إنجليزي | 100% Free |
| web.dev — Learn CSS | مرجع CSS متجدد باستمرار: Box Model، Flexbox، Grid، والحركات — من نفس فريق جوجل | إنجليزي | 100% Free |
| MDN — توثيق HTML | المرجع الرسمي الأشمل لكل عناصر وخصائص HTML — هترجعله كل يوم كمطور | إنجليزي | 100% Free |
| MDN — توثيق CSS | المرجع الرسمي لكل خصائص CSS والمحددات — مع أمثلة تفاعلية لكل خاصية | إنجليزي | 100% Free |
| W3Schools — HTML Tutorial | شرح مختصر بأمثلة ومحرر تجربة فوري — ممتاز للمراجعة السريعة (الشهادات المدفوعة اختيارية) | إنجليزي | Mostly Free |
| Codecademy — Learn HTML | كورس تفاعلي للمبتدئين بمشاريع واختبارات — المحتوى الأساسي مجاني والشهادة ضمن الخطة المدفوعة | إنجليزي | Freemium |
الأسئلة الشائعة
هل HTML وCSS لغات برمجة فعلًا؟
أبدأ بـ HTML ولا CSS؟ ولا الاتنين مع بعض؟
محتاج أكون شاطر في الإنجليزي عشان أتعلم؟
محتاج جهاز قوي أو برامج مدفوعة؟
قد إيه وقت محتاج عشان أبقى جاهز للشغل؟
أتعلم JavaScript إمتى؟
إيه الفرق بين id وclass وإمتى أستخدم كل واحد؟
ليه التنسيق بتاعي مش شغال مع إني كاتب الكود صح؟
إزاي أخلي موقعي شغال كويس على الموبايل؟
هل أقدر أشتغل بـ HTML وCSS بس من غير JavaScript؟
إيه أحسن طريقة أثبت بيها اللي اتعلمته؟
بعد ما أخلص HTML وCSS أعمل إيه؟