CSSالموسوعةدروس CSS

37- نماذج باستخدام CSS

يمكن تحسين مظهر نماذج HTML بشكل كبير باستخدام CSS. إليك كيفية البدء:

تنسيق حقول الإدخال

  • خاصية العرض (width):

تستخدم خاصية width لتحديد عرض حقل الإدخال. على سبيل المثال:

input {
  width: 100%;
}

في حين أن المثال السابق ينطبق على جميع عناصر <input>, يمكنك استخدام مُحددات السمات (attribute selectors) لاستهداف وتنسيق أنواع معينة من حقول الإدخال:

  • input[type=text]: سيؤثر هذا المُحدد على حقول النص فقط.
  • input[type=password]: سيؤثر هذا المُحدد على حقول كلمة المرور فقط.
  • input[type=number]: سيؤثر هذا المُحدد على حقول الأرقام فقط.

يمكنك استخدام نفس المنطق لاستهداف أنواع أخرى من حقول الإدخال، مثل email للبريد الإلكتروني، و date للتاريخ، و checkbox لمربعات الاختيار، وهكذا.

ملخص:

تتيح لك مُحددات السمات في CSS استهداف عناصر معينة بناءً على قيم سمة معينة. هذا مفيد لتنسيق أنواع مختلفة من حقول الإدخال بشكل مستقل والحصول على تحكم أكبر في مظهر نموذج HTML الخاص بك.


حقول إدخال مُبطنة (Padded Inputs)

استخدم خاصية padding في CSS لإضافة مسافة داخل حقول النص.

ملاحظة: عند وجود العديد من حقول الإدخال بجوار بعضها البعض، يُوصى باستخدام خاصية margin لإضافة مسافة إضافية خارجها، مما يوفر تحكمًا أفضل في تباعد عناصر النموذج.

input[type=text] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  box-sizing: border-box;
}

ملاحظة حول خاصية box-sizing

لقد قمنا بتعيين قيمة border-box لخاصية box-sizing. تضمن هذه القيمة احتساب التبطين (padding) والحدود (borders) ضمن العرض والارتفاع الكليين للعنصر.


حقول إدخال محددة (Bordered Inputs)

استخدم خاصية border في CSS لتغيير حجم ولون حد حقول الإدخال. كما يمكنك استخدام خاصية border-radius لإضافة زوايا مستديرة.

input[type=text] {
  border: 2px solid red;
  border-radius: 4px;
}

إضافة حد سفلي فقط إلى حقول الإدخال

إذا كنت ترغب في إضافة حد سفلي فقط إلى حقول الإدخال، يمكنك استخدام خاصية border-bottom في CSS. على سبيل المثال:

input[type=text] {
  border: none;
  border-bottom: 2px solid red;
}

حقول إدخال ملونة

  • الخاصية background-color:

تُستخدم خاصية background-color لتعيين لون خلفية حقل الإدخال. على سبيل المثال:

input[type=text] {
  background-color: #3CBC8D;
  color: white;
}

حقول الإدخال عند تفعيلها (Focused Inputs)

  • إزالة إطار التحديد الأزرق الافتراضي:

بشكل افتراضي، تضيف بعض المتصفحات إطار تحديد باللون الأزرق حول حقول الإدخال عند تفعيلها (عند النقر عليها). يمكنك إزالة هذا السلوك باستخدام الخاصية outline: none; على حقل الإدخال.

input[type=text]:focus {
  background-color: lightblue;
}
input[type=text]:focus {
  border: 3px solid #555;
}

حقول إدخال مع أيقونة/صورة

إذا كنت تريد وضع أيقونة أو صورة داخل حقل الإدخال، يمكنك استخدام الخاصيتين التاليتين في CSS:

  • الخاصية background-image:

تُستخدم خاصية background-image لتعيين صورة أو أيقونة كخلفية لحقل الإدخال. على سبيل المثال:

input[type=text] {
  background-color: white;
  background-image: url('searchicon.png');
  background-position: 10px 10px;
  background-repeat: no-repeat;
  padding-left: 40px;
}

حقل بحث متحرك

في هذا المثال، نستخدم خاصية transition في CSS لتحريك عرض حقل البحث عند تفعيله (عند النقر عليه). ستتعلم المزيد عن خاصية transition لاحقًا في فصلنا حول انتقالات CSS (CSS Transitions).

input[type=text] {
  transition: width 0.4s ease-in-out;
}

input[type=text]:focus {
  width: 100%;
}

تنسيق حقول النص المتعددة (Textareas)

نصيحة: استخدم خاصية resize لمنع تغيير حجم حقول النص المتعددة (تعطيل “المقبض” في الركن الأيمن السفلي):

  • خاصية resize في CSS تتحكم بإمكانية تغيير حجم عنصر ما من قبل المستخدم.
  • باستخدام القيمة resize: none; على حقل النص المتعدد، يمكنك منع المستخدم من تغيير حجمه عن طريق سحب المقبض في الركن الأيمن السفلي.
textarea {
  width: 100%;
  height: 150px;
  padding: 12px 20px;
  box-sizing: border-box;
  border: 2px solid #ccc;
  border-radius: 4px;
  background-color: #f8f8f8;
  resize: none;
}

تنسيق قوائم الإختيار (Select Menus)

تُستخدم قوائم الإختيار (Select Menus) لعرض قائمة من الخيارات للمستخدمين لاختيار واحد منها. يمكنك تخصيص مظهرها باستخدام CSS لتحسين تجربة المستخدم وتناسبها مع تصميم موقعك الويب.

select {
  width: 100%;
  padding: 16px 20px;
  border: none;
  border-radius: 4px;
  background-color: #f1f1f1;
}

تنسيق أزرار الإدخال (Input Buttons)

input[type=button], input[type=submit], input[type=reset] {
  background-color: #04AA6D;
  border: none;
  color: white;
  padding: 16px 32px;
  text-decoration: none;
  margin: 4px 2px;
  cursor: pointer;
}

/* Tip: use width: 100% for full-width buttons */

نموذج استجابة للعرض (Responsive Form)

جرب تغيير عرض نافذة المتصفح:

سترى أن شكل نموذج يتغير اعتمادًا على عرض النافذة. فعندما يكون عرض الشاشة أقل من 600 بكسل، سيتم ترتيب حقول النموذج فوق بعضها البعض بدلاً من عرضها جنبًا إلى جنب.

<!DOCTYPE html>
<html>
<head>
<style>
* {
  box-sizing: border-box;
}

input[type=text], select, textarea {
  width: 100%;
  padding: 12px;
  border: 1px solid #ccc;
  border-radius: 4px;
  resize: vertical;
}

label {
  padding: 12px 12px 12px 0;
  display: inline-block;
}

input[type=submit] {
  background-color: #04AA6D;
  color: white;
  padding: 12px 20px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  float: right;
}

input[type=submit]:hover {
  background-color: #45a049;
}

.container {
  border-radius: 5px;
  background-color: #f2f2f2;
  padding: 20px;
}

.col-25 {
  float: left;
  width: 25%;
  margin-top: 6px;
}

.col-75 {
  float: left;
  width: 75%;
  margin-top: 6px;
}

/* Clear floats after the columns */
.row::after {
  content: "";
  display: table;
  clear: both;
}

/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {
  .col-25, .col-75, input[type=submit] {
    width: 100%;
    margin-top: 0;
  }
}
</style>
</head>
<body>

<h2>Responsive Form</h2>
<p>Resize the browser window to see the effect. When the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other.</p>

<div class="container">
  <form action="/action_page.php">
  <div class="row">
    <div class="col-25">
      <label for="fname">First Name</label>
    </div>
    <div class="col-75">
      <input type="text" id="fname" name="firstname" placeholder="Your name..">
    </div>
  </div>
  <div class="row">
    <div class="col-25">
      <label for="lname">Last Name</label>
    </div>
    <div class="col-75">
      <input type="text" id="lname" name="lastname" placeholder="Your last name..">
    </div>
  </div>
  <div class="row">
    <div class="col-25">
      <label for="country">Country</label>
    </div>
    <div class="col-75">
      <select id="country" name="country">
        <option value="australia">Australia</option>
        <option value="canada">Canada</option>
        <option value="usa">USA</option>
      </select>
    </div>
  </div>
  <div class="row">
    <div class="col-25">
      <label for="subject">Subject</label>
    </div>
    <div class="col-75">
      <textarea id="subject" name="subject" placeholder="Write something.." style="height:200px"></textarea>
    </div>
  </div>
  <br>
  <div class="row">
    <input type="submit" value="Submit">
  </div>
  </form>
</div>

</body>
</html>

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شاهد أيضاً
إغلاق
زر الذهاب إلى الأعلى