bootstrap

فرم‌ در Bootstrap

فرم‌ها قلب تعاملی بسیاری از برنامه‌های وب هستند که امکان ورود اطلاعات و ارسال داده‌ها توسط کاربران را فراهم می‌کنند. در حالی که HTML استاندارد اجزای پایه‌ای فرم را ارائه می‌دهد، Bootstrap سیستمی قدرتمند، یکپارچه و پاسخ‌گو برای استایل‌دهی، ساختاردهی و اعتبارسنجی فرم‌ها فراهم می‌سازد. این راهنمای جامع شما را فراتر از تگ‌های پایه‌ای فرم برده و طیف کامل قابلیت‌های فرم‌ در Bootstrap را بررسی می‌کند.

پایه: ساختار و استایل‌دهی ابتدایی فرم‌ها

Bootstrap استایل اولیه‌ای برای عناصر استاندارد HTML فرم مانند <form>, <input>, <textarea>, <select>, <button> و غیره ارائه می‌دهد تا ظاهر یکدست‌تر و زیباتری بین مرورگرها ایجاد کند. نکات کلیدی:

  • فونت و فاصله‌گذاری یکدست: فونت‌ها استاندارد شده‌اند و فاصله‌گذاری پیش‌فرض منطقی برای عناصر فرم اعمال می‌شود.
  • ظاهر بهتر ورودی‌ها: فیلدهای ورودی دارای گوشه‌های گرد، حاشیه ظریف و استایل تمرکز (focus) بهبود یافته هستند.
  • عرض کامل به صورت پیش‌فرض: کنترل‌های فرم معمولاً در سیستم گرید Bootstrap به طور پیش‌فرض عرض ستون والد خود را پر می‌کنند و این باعث واکنش‌گرایی بهتر می‌شود.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Basic Bootstrap Form</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container mt-4">
        <h2>Basic Form</h2>
        <form>
            <div class="mb-3">
                <label for="exampleInputEmail1" class="form-label">Email address</label>
                <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
                <div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
            </div>
            <div class="mb-3">
                <label for="exampleInputPassword1" class="form-label">Password</label>
                <input type="password" class="form-control" id="exampleInputPassword1">
            </div>
            <div class="mb-3 form-check">
                <input type="checkbox" class="form-check-input" id="exampleCheck1">
                <label class="form-check-label" for="exampleCheck1">Check me out</label>
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

ساختاردهی فرم‌ در Bootstrap: چیدمان و سیستم گرید

سیستم گرید Bootstrap ابزاری کلیدی برای ساخت فرم‌های انعطاف‌پذیر و واکنش‌گرا است. می‌توانید عناصر فرم را مانند سایر محتواها در ردیف‌ها و ستون‌ها بچینید.

  • چیدمان پایه گرید: با استفاده از کلاس‌های .row و .col-* می‌توانید برچسب‌ها و کنترل‌ها را در صفحه‌های بزرگ کنار هم و در صفحه‌های کوچک به صورت پشته‌ای نمایش دهید.
<form class="row g-3">
    <div class="col-md-6">
        <label for="inputEmail4" class="form-label">Email</label>
        <input type="email" class="form-control" id="inputEmail4">
    </div>
    <div class="col-md-6">
        <label for="inputPassword4" class="form-label">Password</label>
        <input type="password" class="form-control" id="inputPassword4">
    </div>
    <div class="col-12">
        <label for="inputAddress" class="form-label">Address</label>
        <input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
    </div>
    <div class="col-md-6">
        <label for="inputCity" class="form-label">City</label>
        <input type="text" class="form-control" id="inputCity">
    </div>
    <div class="col-md-4">
        <label for="inputState" class="form-label">State</label>
        <select id="inputState" class="form-select">
            <option selected>Choose...</option>
            <option>California</option>
            <option>Texas</option>
            </select>
    </div>
    <div class="col-md-2">
        <label for="inputZip" class="form-label">Zip</label>
        <input type="text" class="form-control" id="inputZip">
    </div>
    <div class="col-12">
        <button type="submit" class="btn btn-primary">Sign in</button>
    </div>
</form>

گروه‌های فرم (.mb-3)

کلاس .mb-3 معمولاً برای ایجاد فاصله عمودی بین برچسب و ورودی استفاده می‌شود که خوانایی فرم را افزایش می‌دهد.

متن کمکی فرم‌ها (.form-text)

کلاس .form-text برای نمایش متن راهنما در زیر فیلدهای ورودی استفاده می‌شود. با استفاده از aria-describedby می‌توانید این متن را با فیلد ورودی مرتبط کنید.

برچسب‌ها (.form-label)

Bootstrap استایل پیش‌فرضی برای برچسب‌ها فراهم کرده تا با استفاده از ویژگی for به وضوح به فیلد مربوطه متصل شوند.

کنترل‌های خاص فرم‌ در Bootstrap و استایل‌دهی:

انواع ورودی‌ها: ورودی‌هایی مثل متن، ایمیل، رمز عبور، عدد، تاریخ و فایل با کلاس .form-control استایل یکسان و زیبایی می‌گیرند.

منوهای انتخاب (<select> با .form-select): کلاس .form-select برای استایل‌دهی منوی کشویی استفاده می‌شود.

<label for="exampleFormControlSelect1" class="form-label">Example select</label>
<select class="form-select" id="exampleFormControlSelect1">
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>

نواحی متنی (<textarea> با .form-control): برای وارد کردن متن چند خطی استفاده می‌شود. می‌توانید با ویژگی rows ارتفاع آن را کنترل کنید.

<label for="exampleFormControlTextarea1" class="form-label">Example textarea</label>
<textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>

چک‌باکس و دکمه‌های رادیویی: درون کانتینر .form-check می‌توانید چک‌باکس‌ها و رادیوها را با استایل سفارشی نمایش دهید.

<div class="form-check">
    <input class="form-check-input" type="checkbox" value="" id="flexCheckDefault">
    <label class="form-check-label" for="flexCheckDefault">
        Default checkbox
    </label>
</div>
<div class="form-check">
    <input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1" checked>
    <label class="form-check-label" for="flexRadioDefault1">
        Default radio
    </label>
</div>

چک‌باکس‌ها و رادیوهای خطی (.form-check-inline): برای نمایش کنار هم چک‌باکس‌ها یا رادیوها.

ورودی بازه‌ای (input[type="range"] با .form-range): استایل زیبا برای اسلایدر عددی.

<label for="customRange1" class="form-label">Example range</label>
<input type="range" class="form-range" id="customRange1">

سوئیچ‌ها (.form-check-switch): چک‌باکس‌هایی با ظاهر سوئیچ.

<div class="form-check form-switch">
    <input class="form-check-input" type="checkbox" role="switch" id="flexSwitchCheckDefault">
    <label class="form-check-label" for="flexSwitchCheckDefault">Default switch checkbox input</label>
</div>

ورودی فایل: با کلاس .form-control استایل‌دهی زیبا برای آپلود فایل.

<label for="formFile" class="form-label">Default file input example</label>
<input class="form-control" type="file" id="formFile">

ورودی رنگ (type="color" با .form-control-color): انتخاب‌گر رنگ استایل‌شده.

<label for="exampleColorInput" class="form-label">Color picker</label>
<input type="color" class="form-control form-control-color" id="exampleColorInput" value="#563d7c" title="Choose your color">

اعتبارسنجی فرم‌ها: بازخورد کاربر

Bootstrap استایل‌های داخلی برای نمایش وضعیت اعتبارسنجی دارد:

  • وضعیت معتبر (.is-valid): مرز سبز و آیکون موفقیت.
  • وضعیت نامعتبر (.is-invalid): مرز قرمز و آیکون خطا.
  • نمایش پیام‌ها: با کلاس‌های .valid-feedback و .invalid-feedback پیام‌ها را نمایش دهید.
<div class="mb-3">
    <label for="validationServer01" class="form-label">First name</label>
    <input type="text" class="form-control is-valid" id="validationServer01" value="Mark" required>
    <div class="valid-feedback">
        Looks good!
    </div>
</div>
<div class="mb-3">
    <label for="validationServer02" class="form-label">Last name</label>
    <input type="text" class="form-control is-invalid" id="validationServer02" value="" required>
    <div class="invalid-feedback">
        Please provide a valid last name.
    </div>
</div>

توجه: برای اعتبارسنجی واقعی باید از منطق سمت سرور یا جاوااسکریپت سمت کاربر استفاده کنید.

  • API اعتبارسنجی مرورگر: Bootstrap با API داخلی مرورگر (مثل ویژگی‌های required, pattern, minlength) سازگار است.

چیدمان‌های پیشرفته فرم و سفارشی‌سازی:

فرم‌های افقی: برچسب در سمت چپ و فیلد در سمت راست در صفحه‌های بزرگ. با استفاده از کلاس‌های .row و .col-*.

برچسب‌های شناور (.form-floating): برچسب هنگام فوکوس یا ورود داده بالا می‌رود.

<div class="form-floating mb-3">
    <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
    <label for="floatingInput">Email address</label>
</div>
<div class="form-floating">
    <input type="password" class="form-control" id="floatingPassword" placeholder="Password">
    <label for="floatingPassword">Password</label>
</div>

اندازه فرم‌ها: با استفاده از .form-control-sm, .form-control-lg و معادل‌های آن برای select.

ورودی فقط‌خواندنی: استفاده از .form-control-plaintext برای نمایش اطلاعات به صورت ساده و بدون قابلیت ویرایش.

ملاحظات دسترسی‌پذیری در فرم‌ها:

  • استفاده صحیح از <label> با ویژگی for برای ارتباط با ورودی‌ها
  • پیام‌های خطای واضح با .invalid-feedback
  • استفاده از ویژگی‌های ARIA مثل aria-describedby, aria-invalid
  • امکان حرکت کامل در فرم با صفحه‌کلید
  • حفظ یا طراحی مناسب برای فوکوس‌بینی

ایده‌هایی برای طراحی خلاقانه فرم با Bootstrap:

  • فرم‌های چند مرحله‌ای: با کمک گرید و جاوااسکریپت مراحل را مشخص کنید.
  • فرم‌های خطی: استفاده از .row برای نمایش عناصر فرم در یک خط
  • فرم در کارت: قرار دادن فرم در کارت Bootstrap برای ظاهر منظم و حرفه‌ای
  • فرم در سایدبار: برای بخش‌های ورود متمرکز
  • فرم در مودال: برای ورود اطلاعات بدون ترک صفحه فعلی

نتیجه‌گیری: ساخت تجربه‌های تعاملی با فرم‌های Bootstrap

Bootstrap فریم‌ورکی قدرتمند و انعطاف‌پذیر برای ساخت فرم‌هایی فراهم می‌کند که نه‌تنها کاربردی، بلکه زیبا و کاربرپسند در تمام دستگاه‌ها هستند. با استفاده از سیستم گرید، کلاس‌های فرم، استایل اعتبارسنجی و رعایت اصول دسترسی‌پذیری، می‌توانید تجربه‌هایی تعاملی بسازید که کاربران را به سادگی در مسیر ورود داده‌ها راهنمایی کند. از قدرت فرم‌های Bootstrap بهره ببرید و رابط‌های کاربری کارآمد، قابل‌دسترسی و زیبا طراحی کنید.

برای مطالعه بیشتر می توانید به سایت مرجع مراجعه نمایید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *