امتحان HTML 1: الأساسيات والمستوى المتوسط (20 تمرين مركب)
امتحان HTML: الأساسيات والمستوى المتوسط
يتكون هذا الامتحان من 20 تمرين شامل. كل تمرين يحتوي على عدة مطالب (أسئلة) يجب تنفيذها معاً في كود واحد.
التمارين 1-10: المستوى الأساسي |
التمارين 11-15: المستوى المتوسط |
التمارين 16-20: المستوى المتقدم
قم بإنشاء صفحة HTML كاملة تتضمن المتطلبات التالية:
- تعريف نوع المستند (Doctype) كـ HTML5.
- تحديد لغة الصفحة لتكون العربية (ar) واتجاه النص من اليمين لليسار (rtl).
- إضافة ترميز الأحرف (Charset) ليكون UTF-8.
- وضع عنوان للصفحة (Title) باسم "امتحاني الأول".
- إضافة وصف للصفحة (Meta Description) بمحتوى "صفحة تجريبية".
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<title>امتحاني الأول</title>
<meta name="description" content="صفحة تجريبية">
</head>
<body>
</body>
</html>
اكتب كود HTML لعرض المحتوى التالي:
- عنوان رئيسي (H1) للنص "مقدمة في البرمجة".
- خط فاصل أفقي (Horizontal Rule).
- عنوان فرعي (H2) للنص "ما هي البرمجة؟".
- فقرة نصية تحتوي على كلمة "مهمة" بخط غامق (Strong) وكلمة "جداً" بخط مائل (Em).
- إضافة سطر جديد (Line Break) داخل الفقرة.
<h1>مقدمة في البرمجة</h1>
<hr>
<h2>ما هي البرمجة؟</h2>
<p>
البرمجة مهارة <strong>مهمة</strong> <em>جداً</em> في عصرنا الحالي.<br>
وهي أساس التكنولوجيا.
</p>
أنشئ 3 أنواع مختلفة من الروابط:
- رابط نصي يذهب إلى "google.com" ويفتح في نافذة جديدة.
- رابط يفتح برنامج البريد الإلكتروني لإرسال رسالة إلى "info@example.com".
- رابط داخلي ينقل المستخدم إلى قسم في نفس الصفحة يحمل المعرف "footer".
<!-- رابط خارجي -->
<a href="https://google.com" target="_blank">Google</a>
<!-- رابط بريد إلكتروني -->
<a href="mailto:info@example.com">راسلنا</a>
<!-- رابط داخلي -->
<a href="#footer">الذهاب للأسفل</a>
تعامل مع الصور بالشكل التالي:
- أدرج صورة "cat.jpg" بعرض 300 بكسل.
- أضف نصاً بديلاً (Alt Text) للصورة "قطة لطيفة".
- ضع الصورة داخل عنصر `figure` وأضف لها شرحاً (Caption) أسفلها بعنوان "صورة اليوم".
<figure>
<img src="cat.jpg" alt="قطة لطيفة" width="300">
<figcaption>صورة اليوم</figcaption>
</figure>
أنشئ هيكل قوائم متداخل:
- قائمة مرتبة (Ordered List) للعناصر الرئيسية: "فواكه"، "خضروات".
- داخل عنصر "فواكه"، أنشئ قائمة غير مرتبة (Unordered List) تحتوي على: "تفاح"، "موز".
- تأكد من إغلاق جميع الوسوم بشكل صحيح.
<ol>
<li>فواكه
<ul>
<li>تفاح</li>
<li>موز</li>
</ul>
</li>
<li>خضروات</li>
</ol>
صمم جدولاً يحتوي على:
- قسم رأس الجدول (thead) يحتوي على صف العناوين: "المنتج"، "السعر".
- قسم جسم الجدول (tbody) يحتوي على صفين من البيانات.
- قسم تذييل الجدول (tfoot) يحتوي على صف للإجمالي.
- أضف حدوداً للجدول (border="1").
<table border="1">
<thead>
<tr>
<th>المنتج</th>
<th>السعر</th>
</tr>
</thead>
<tbody>
<tr>
<td>قلم</td>
<td>5$</td>
</tr>
<tr>
<td>دفتر</td>
<td>10$</td>
</tr>
</tbody>
<tfoot>
<tr>
<td>الإجمالي</td>
<td>15$</td>
</tr>
</tfoot>
</table>
أنشئ نموذج تسجيل يحتوي على:
- حقل لاسم المستخدم (text) مع تسمية (Label).
- حقل لكلمة المرور (password) مطلوب (required).
- حقل للبريد الإلكتروني (email) مع نص توضيحي (placeholder).
- زر إرسال (submit) وزر إعادة تعيين (reset).
<form action="/register" method="POST">
<label for="user">اسم المستخدم:</label>
<input type="text" id="user" name="username">
<br>
<label for="pass">كلمة المرور:</label>
<input type="password" id="pass" name="password" required>
<br>
<label for="mail">البريد:</label>
<input type="email" id="mail" name="email" placeholder="example@mail.com">
<br>
<button type="submit">تسجيل</button>
<button type="reset">مسح</button>
</form>
استخدم عناصر HTML5 الدلالية لبناء هيكل صفحة:
- شريط علوي (header) يحتوي على عنوان.
- شريط تنقل (nav) يحتوي على رابطين.
- قسم رئيسي (main) يحتوي على مقال (article).
- تذييل (footer) يحتوي على حقوق النشر.
<header>
<h1>مدونتي</h1>
</header>
<nav>
<a href="#">الرئيسية</a> | <a href="#">من نحن</a>
</nav>
<main>
<article>
<h2>عنوان المقال</h2>
<p>نص المقال...</p>
</article>
</main>
<footer>
<p>© 2024 جميع الحقوق محفوظة</p>
</footer>
أضف ملفات وسائط مع خيارات التحكم:
- ملف صوتي "song.mp3" يعمل تلقائياً (autoplay) ومكتوم الصوت (muted).
- ملف فيديو "movie.mp4" يظهر أزرار التحكم (controls) وصورة معاينة (poster="poster.jpg").
<!-- صوت -->
<audio src="song.mp3" autoplay muted></audio>
<!-- فيديو -->
<video src="movie.mp4" controls poster="poster.jpg"></video>
قم بتنفيذ ما يلي:
- اكتب تعليقاً (Comment) يشرح الكود التالي.
- اعرض الرموز الخاصة: علامة اليورو (€)، علامة حقوق النسخ (©)، ومسافة غير منكسرة.
- استخدم وسم `code` لعرض كود برمجي بسيط.
<!-- هذا تعليق لا يظهر في المتصفح -->
<p>السعر: 50€ | الحقوق: © | مسافة: هنا</p>
<p>الكود: <code>print("Hello")</code></p>
أنشئ قائمة تنقل يمكن الوصول إليها باستخدام ARIA:
- أنشئ قائمة تنقل (nav) مع تسمية ARIA مناسبة (aria-label).
- أضف زر قائمة منسدلة مع حالة موسعة/مطوية (aria-expanded).
- أضف نصاً مخفياً بصرياً للقارئات الشاشة (sr-only).
- استخدم role="navigation" و role="button" بشكل صحيح.
<nav aria-label="القائمة الرئيسية" role="navigation">
<span class="sr-only">القائمة الرئيسية</span>
<button role="button" aria-expanded="false" aria-controls="menu-list">
<span aria-hidden="true">☰</span>
القائمة
</button>
<ul id="menu-list">
<li><a href="#home">الرئيسية</a></li>
<li><a href="#about">من نحن</a></li>
</ul>
</nav>
أنشئ نموذج يحفظ البيانات في المتصفح:
- أنشئ نموذج بحقل نصي لاسم المستخدم (id="username").
- أضف زر "حفظ" يخزن القيمة في localStorage.
- أضف زر "استرجاع" يعرض القيمة المحفوظة.
- أضف زر "مسح" يحذف البيانات من localStorage.
<div>
<input type="text" id="username" placeholder="أدخل اسمك">
<button onclick="localStorage.setItem('name', document.getElementById('username').value)">حفظ</button>
<button onclick="alert(localStorage.getItem('name'))">استرجاع</button>
<button onclick="localStorage.removeItem('name')">مسح</button>
</div>
استخدم data attributes لإنشاء بطاقات منتجات:
- أنشئ div مع السمات: data-product-id، data-product-name، data-price.
- أضف زر "عرض التفاصيل" لكل بطاقة.
- استخدم JavaScript لقراءة البيانات وعرضها عند النقر.
<div class="product" data-product-id="101" data-product-name="لابتوب" data-price="3500">
<h4>لابتوب Dell</h4>
<button onclick="showDetails(this.parentElement)">عرض التفاصيل</button>
</div>
<script>
function showDetails(el) {
alert('المنتج: ' + el.dataset.productName + ' - السعر: ' + el.dataset.price);
}
</script>
استخدم عنصر picture للصور المتجاوبة:
- أنشئ عنصر picture مع source مختلفة حسب حجم الشاشة.
- استخدم media query لعرض صورة مختلفة للشاشات الصغيرة (max-width: 600px).
- أضف صورة افتراضية باستخدام img كـ fallback.
<picture>
<source media="(max-width: 600px)" srcset="small.jpg">
<source media="(max-width: 1200px)" srcset="medium.jpg">
<img src="large.jpg" alt="صورة متجاوبة">
</picture>
أنشئ قسم أسئلة شائعة (FAQ):
- استخدم عنصر details مع summary لإنشاء 3 أسئلة قابلة للطي.
- اجعل السؤال الأول مفتوحاً افتراضياً (open).
- أضف محتوى متنوع داخل كل سؤال (نص، قائمة، رابط).
<details open>
<summary>ما هي ساعات العمل؟</summary>
<p>نعمل من 9 صباحاً حتى 5 مساءً.</p>
</details>
<details>
<summary>كيف أتواصل معكم؟</summary>
<ul>
<li>البريد: info@site.com</li>
<li>الهاتف: 123456</li>
</ul>
</details>
<details>
<summary>أين موقعكم؟</summary>
<p>زر <a href="#map">الخريطة</a> لمعرفة موقعنا.</p>
</details>
أنشئ نافذة حوار (Modal):
- استخدم عنصر dialog لإنشاء نافذة حوار.
- أضف زر لفتح النافذة باستخدام showModal().
- أضف زر داخل النافذة لإغلاقها باستخدام close().
- أضف نموذج داخل النافذة مع method="dialog".
<button onclick="document.getElementById('myDialog').showModal()">فتح النافذة</button>
<dialog id="myDialog">
<h2>نافذة الحوار</h2>
<p>هذه نافذة حوار HTML5</p>
<form method="dialog">
<button>إغلاق</button>
</form>
</dialog>
استخدم عنصر template لإنشاء محتوى ديناميكي:
- أنشئ template يحتوي على بطاقة منتج.
- استخدم JavaScript لاستنساخ القالب وتعديل محتواه.
- أضف البطاقة المستنسخة إلى الصفحة.
<template id="productTemplate">
<div class="product-card">
<h3 class="product-name"></h3>
<p class="product-price"></p>
</div>
</template>
<div id="products"></div>
<script>
const template = document.getElementById('productTemplate');
const clone = template.content.cloneNode(true);
clone.querySelector('.product-name').textContent = 'هاتف ذكي';
clone.querySelector('.product-price').textContent = '500$';
document.getElementById('products').appendChild(clone);
</script>
استخدم عناصر القياس والتقدم:
- أنشئ meter لعرض مستوى البطارية (value="0.7" low="0.3" high="0.8").
- أنشئ progress لعرض تقدم التحميل (value="70" max="100").
- أضف تسميات واضحة لكل عنصر.
<!-- مقياس البطارية -->
<label for="battery">مستوى البطارية:</label>
<meter id="battery" value="0.7" min="0" max="1" low="0.3" high="0.8" optimum="0.9">70%</meter>
<!-- شريط التقدم -->
<label for="download">تقدم التحميل:</label>
<progress id="download" value="70" max="100">70%</progress>
أنشئ حقل إدخال مع اقتراحات:
- أنشئ input مرتبط بـ datalist للمتصفحات.
- أضف 5 خيارات: Chrome, Firefox, Safari, Edge, Opera.
- اجعل الحقل يقبل أي قيمة أخرى أيضاً.
<label for="browser">اختر متصفحك:</label>
<input list="browsers" id="browser" name="browser">
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
<option value="Safari">
<option value="Edge">
<option value="Opera">
</datalist>
أنشئ صفحة هبوط متكاملة تحتوي على:
- هيكل دلالي كامل (header, nav, main, footer).
- قسم بطل (Hero) مع عنوان ووصف وزر CTA.
- قسم مميزات (Features) باستخدام section وarticle.
- نموذج اتصال مع التحقق من الحقول.
- تذييل مع روابط اجتماعية وحقوق النشر.
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>صفحة الهبوط</title>
</head>
<body>
<header>
<nav aria-label="التنقل الرئيسي">
<a href="#hero">الرئيسية</a>
<a href="#features">المميزات</a>
<a href="#contact">اتصل بنا</a>
</nav>
</header>
<main>
<section id="hero">
<h1>مرحباً بك في موقعنا</h1>
<p>نقدم لك أفضل الخدمات</p>
<a href="#contact">ابدأ الآن</a>
</section>
<section id="features">
<h2>مميزاتنا</h2>
<article>
<h3>سرعة عالية</h3>
<p>خدماتنا سريعة وموثوقة</p>
</article>
<article>
<h3>دعم 24/7</h3>
<p>فريقنا متاح دائماً</p>
</article>
</section>
<section id="contact">
<h2>تواصل معنا</h2>
<form action="/submit" method="POST">
<label for="name">الاسم:</label>
<input type="text" id="name" required>
<label for="email">البريد:</label>
<input type="email" id="email" required>
<label for="msg">الرسالة:</label>
<textarea id="msg" required></textarea>
<button type="submit">إرسال</button>
</form>
</section>
</main>
<footer>
<nav aria-label="روابط اجتماعية">
<a href="#">فيسبوك</a>
<a href="#">تويتر</a>
</nav>
<p>© 2024 جميع الحقوق محفوظة</p>
</footer>
</body>
</html>