إنشاء نموذج طلب توظيف Job Application Form
مختبرهيكل HTML الأساسي HTML boilerplate
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<title>إنشاء نموذج طلب توظيف</title>
</head>
<body>
<!-- هنا تضع اكواد التطبيق -->
</body>
</html>
قصص المستخدم User stories :
-
ينبغي أن يكون لديك عنصر div يحمل الفئة container.
-
داخل عنصر div، ينبغي أن يكون هناك عنصر form.
-
يجب أن يحتوي النموذج (form) على عنصر إدخال input من النوع text وبالمُعرِّف name ، وذلك لإدخال الاسم الكامل للمستخدم.
-
ينبغي أن يتوفر لديك عنصر input آخر من النوع email وبالمعرف email لإدخال عنوان البريد الإلكتروني للمستخدم.
-
يجب أن يتضمن النموذج عنصراً من نوع select يحمل المعرّف position، والذي يتيح للمستخدمين اختيار منصب وظيفي.
-
ينبغي أن يتوفر لديك عنصر fieldset يحمل الفئة radio-group.
-
داخل العنصر .radio-group، يجب أن تضع مجموعة من عناصر input من النوع radio مع التسميات labels المقابلة لها، وذلك لاختيار خيارات التوافر (على سبيل المثال: دوام كامل، دوام جزئي). يجب أن تكون قيمة الخاصية name لهذه المجموعة هي availability.
-
ينبغي أن يتوفر لديك عنصر textarea يحمل المُعرِّف message لإدخال رسالة.
-
ينبغي عليك ربط كل عنصر من عناصر input أو select أو textarea بعنصر label.
-
يجب أن يتوفر لديك عنصر زر button من النوع submit لإرسال النموذج.
-
أضف الفئة الزائفة :focus إلى عنصري input و textarea لتغيير لون حدودهما وإزالة الإطار الافتراضي عند التركيز عليهما.
-
يجب أن تحتوي عناصر input و select و textarea على فئة زائفة :invalid تُغيِّر لون الحدود إلى الأحمر عند اكتشاف إدخال غير صالح.
-
يجب أن تحتوي عناصر input و select و textarea على فئة زائفة :valid تُغيّر لون الحدود إلى الأخضر عند إدخال بيانات صحيحة.
-
يجب أن يحتوي عنصر button على فئة زائفة :hover تُغيِّر لون الخلفية عند تمرير مؤشر الفأرة فوقه.
-
استخدم الفئة الزائفة :checked على .radio-group input[type="radio"] لإضافة لون إطار، ولون خلفية، وظل للصندوق (box shadow) عند اختيار زر الاختيار (radio button).
-
استخدم الفئة الزائفة :checked مع أزرار الاختيار (radio buttons) لتغيير لون نص العنصر label المرتبط بها عند تحديد الخيار.
-
أضف الفئة الزائفة :first-of-type إلى عنصر input لتنسيق حقل الإدخال الأول بشكل مختلف (على سبيل المثال: جعل الزوايا مستديرة).
ملاحظة: تأكد من ربط ملف الأنماط (stylesheet) في ملف HTML وتطبيق قواعد CSS.
حل التطبيق :
index.html
<!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>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>نموذج طلب توظيف</h1>
<form>
<label for="name">الاسم الكامل:</label>
<input type="text" id="name" name="name"placeholder="أدخل اسمك" required />
<label for="email">البريد الإلكتروني:</label>
<input type="email" id="email" name="email"placeholder="أدخل بريدك الإلكتروني" required />
<label for="position">الوظيفة:</label>
<select id="position" name="position" required>
<option value="">اختر وظيفة</option>
<option value="developer">مطور ويب</option>
<option value="designer">مصمم واجهة/تجربة المستخدم (UI/UX)</option>
<option value="tester">مختبِر برمجيات</option>
<option value="manager">مدير مشاريع</option>
</select>
<fieldset class=radio-group>
<legend>الإتاحة</legend>
<input type="radio" id="full-time" name="availibity" value="full-time" checked />
<label for="full-time">دوام كامل</label>
<input type="radio" id="part-time" name="availibity" value="part-time" />
<label for="part-time">دوام جزئى</label>
</fieldset>
<label for="message">لماذا ترغب في الحصول على هذه الوظيفة؟</label>
<textarea id="message" name="message" placeholder="اكتب دوافعك" required></textarea>
<button type="submit">قدِّم الطلب</button>
</form>
</div>
</body>
</html>
styles.css
* {
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 30px 20px;
background-color: #fff;
}
.container {
max-width: 640px;
margin: 0 auto;
padding: 25px 20px 12px;
background-color: white;
border-radius: 8px;
box-shadow: 0 0 10px #00000015;
}
h1 {
text-align: center;
font-size: 32px;
margin: 15px 0 22px;
}
label {
display: block;
margin: 10px 0;
font-weight: bold;
}
input,
select,
textarea {
width: 100%;
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 4px;
font-family: inherit;
font-size: 14px;
}
/* Style the first input differently */
input:first-of-type {
border-radius: 6px;
}
/* Focus State */
input:focus,
textarea:focus {
outline: none;
border-color: #0066cc;
}
/* Invalid fields */
input:invalid,
select:invalid,
textarea:invalid {
border-color: red;
}
/* Valid fields */
input:valid,
select:valid,
textarea:valid {
border-color: green;
}
/* Availability group */
.radio-group {
margin: 15px 2px 0;
padding: 12px 15px 18px;
border: 1px solid #aaa;
}
.radio-group legend {
padding: 0 3px;
}
/* Radio buttons */
.radio-group input[type="radio"] {
appearance: none;
width: 24px;
height: 24px;
margin: 0 5px 0 0;
padding: 0;
border: 2px solid #ccc;
border-radius: 50%;
vertical-align: middle;
cursor: pointer;
}
.radio-group input[type="radio"]:checked {
border-color: green;
background-color: white;
box-shadow: inset 0 0 0 4px white;
background-image: radial-gradient(green 50%, transparent 55%);
}
/* Selected option label */
.radio-group input[type="radio"]:checked + label {
color: green;
}
/* Keep radio labels beside their buttons */
.radio-group input[type="radio"] + label {
display: inline-block;
margin: 0 5px 0 0;
font-weight: normal;
vertical-align: middle;
}
/* Motivation field */
textarea {
height: 98px;
resize: vertical;
}
/* Submit button */
button {
width: 100px;
padding: 10px;
border: none;
border-radius: 4px;
background-color: green;
color: white;
font-size: 16px;
cursor: pointer;
}
button:hover {
background-color: darkgreen;
}