تشکیل می دهد
مثالها و دستورالعملهای استفاده برای سبکهای کنترل فرم، گزینههای طرحبندی، و اجزای سفارشی برای ایجاد طیف گستردهای از فرمها.
بررسی اجمالی
کنترلهای فرم Bootstrap در سبکهای فرم Rebooted ما با کلاسها گسترش مییابد. از این کلاسها برای انتخاب نمایشگرهای سفارشیشده آنها برای رندر سازگارتر در مرورگرها و دستگاهها استفاده کنید.
مطمئن شوید که از یک type
ویژگی مناسب در همه ورودیها استفاده میکنید (مثلاً email
برای آدرس ایمیل یا number
اطلاعات عددی) تا از کنترلهای ورودی جدیدتر مانند تأیید ایمیل، انتخاب شماره و موارد دیگر استفاده کنید.
در اینجا یک مثال سریع برای نشان دادن سبک های فرم بوت استرپ آورده شده است. برای مستندات مربوط به کلاس های مورد نیاز، طرح بندی فرم و موارد دیگر به خواندن ادامه دهید.
<form>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1">
</div>
<div class="form-group 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>
کنترل های فرم
کنترلهای فرم متنی - مانند <input>
s، <select>
s و <textarea>
s - با .form-control
کلاس استایلبندی میشوند. شامل سبک هایی برای ظاهر کلی، حالت فوکوس، اندازه و موارد دیگر است.
حتماً فرمهای سفارشی ما را برای استایل بیشتر بررسی <select>
کنید.
<form>
<div class="form-group">
<label for="exampleFormControlInput1">Email address</label>
<input type="email" class="form-control" id="exampleFormControlInput1" placeholder="[email protected]">
</div>
<div class="form-group">
<label for="exampleFormControlSelect1">Example select</label>
<select class="form-control" id="exampleFormControlSelect1">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlSelect2">Example multiple select</label>
<select multiple class="form-control" id="exampleFormControlSelect2">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<div class="form-group">
<label for="exampleFormControlTextarea1">Example textarea</label>
<textarea class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
</div>
</form>
برای ورودی فایل، آن را .form-control
با .form-control-file
.
<form>
<div class="form-group">
<label for="exampleFormControlFile1">Example file input</label>
<input type="file" class="form-control-file" id="exampleFormControlFile1">
</div>
</form>
سایز بندی
با استفاده از کلاس هایی مانند .form-control-lg
و ارتفاع را تنظیم کنید .form-control-sm
.
<input class="form-control form-control-lg" type="text" placeholder=".form-control-lg">
<input class="form-control" type="text" placeholder="Default input">
<input class="form-control form-control-sm" type="text" placeholder=".form-control-sm">
<select class="form-control form-control-lg">
<option>Large select</option>
</select>
<select class="form-control">
<option>Default select</option>
</select>
<select class="form-control form-control-sm">
<option>Small select</option>
</select>
فقط خواندنی
readonly
برای جلوگیری از تغییر مقدار ورودی، ویژگی بولی را روی یک ورودی اضافه کنید . ورودیهای فقط خواندنی سبکتر به نظر میرسند (درست مانند ورودیهای غیرفعال)، اما مکاننمای استاندارد را حفظ میکنند.
<input class="form-control" type="text" placeholder="Readonly input here..." readonly>
متن ساده فقط خواندنی
اگر میخواهید <input readonly>
عناصری در فرم خود بهصورت متن ساده استایلبندی شده باشند، از .form-control-plaintext
کلاس برای حذف استایل پیشفرض فیلد فرم و حفظ حاشیه و بالشتک صحیح استفاده کنید.
<form>
<div class="form-group row">
<label for="staticEmail" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="text" readonly class="form-control-plaintext" id="staticEmail" value="[email protected]">
</div>
</div>
<div class="form-group row">
<label for="inputPassword" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword">
</div>
</div>
</form>
<form class="form-inline">
<div class="form-group mb-2">
<label for="staticEmail2" class="sr-only">Email</label>
<input type="text" readonly class="form-control-plaintext" id="staticEmail2" value="[email protected]">
</div>
<div class="form-group mx-sm-3 mb-2">
<label for="inputPassword2" class="sr-only">Password</label>
<input type="password" class="form-control" id="inputPassword2" placeholder="Password">
</div>
<button type="submit" class="btn btn-primary mb-2">Confirm identity</button>
</form>
ورودی های محدوده
ورودی های محدوده قابل پیمایش افقی را با استفاده از .form-control-range
.
<form>
<div class="form-group">
<label for="formControlRange">Example Range input</label>
<input type="range" class="form-control-range" id="formControlRange">
</div>
</form>
چک باکس ها و رادیوها
.form-check
چک باکس های پیش فرض و رادیوها با کمک یک کلاس واحد برای هر دو نوع ورودی بهبود می یابند که چیدمان و رفتار عناصر HTML آنها را بهبود می بخشد . چک باکس ها برای انتخاب یک یا چند گزینه در یک لیست هستند، در حالی که رادیوها برای انتخاب یک گزینه از بسیاری از گزینه ها هستند.
چک باکس های غیرفعال و رادیوها پشتیبانی می شوند. این disabled
ویژگی برای کمک به نشان دادن وضعیت ورودی، رنگ روشن تری اعمال می کند.
چک باکس ها و دکمه های رادیویی از اعتبار سنجی فرم مبتنی بر HTML پشتیبانی می کنند و برچسب های مختصر و قابل دسترس ارائه می دهند. به این ترتیب، <input>
s و <label>
s ما عناصر خواهر و برادر هستند در مقابل یک <input>
درون یک <label>
. این کمی پرمخاطب تر است زیرا باید مشخص کنید id
و for
ویژگی هایی را برای مرتبط کردن <input>
و <label>
.
پیشفرض (انباشته)
بهطور پیشفرض، هر تعدادی از چک باکسها و رادیوهایی که خواهر و برادر فوری هستند به صورت عمودی روی هم قرار میگیرند و با فاصله مناسب با هم قرار .form-check
میگیرند.
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck1">
<label class="form-check-label" for="defaultCheck1">
Default checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="defaultCheck2" disabled>
<label class="form-check-label" for="defaultCheck2">
Disabled checkbox
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios1" value="option1" checked>
<label class="form-check-label" for="exampleRadios1">
Default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios2" value="option2">
<label class="form-check-label" for="exampleRadios2">
Second default radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="exampleRadios" id="exampleRadios3" value="option3" disabled>
<label class="form-check-label" for="exampleRadios3">
Disabled radio
</label>
</div>
درون خطی
کادرهای انتخاب یا رادیوها را در همان ردیف افقی با افزودن .form-check-inline
به هر یک گروه بندی کنید .form-check
.
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox1" value="option1">
<label class="form-check-label" for="inlineCheckbox1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox2" value="option2">
<label class="form-check-label" for="inlineCheckbox2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="checkbox" id="inlineCheckbox3" value="option3" disabled>
<label class="form-check-label" for="inlineCheckbox3">3 (disabled)</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio1" value="option1">
<label class="form-check-label" for="inlineRadio1">1</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio2" value="option2">
<label class="form-check-label" for="inlineRadio2">2</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="inlineRadioOptions" id="inlineRadio3" value="option3" disabled>
<label class="form-check-label" for="inlineRadio3">3 (disabled)</label>
</div>
بدون برچسب
.position-static
به ورودیهایی اضافه کنید .form-check
که متن برچسبی ندارند. به یاد داشته باشید که هنوز نوعی نام در دسترس برای فناوری های کمکی ارائه کنید (به عنوان مثال، استفاده از aria-label
).
<div class="form-check">
<input class="form-check-input position-static" type="checkbox" id="blankCheckbox" value="option1" aria-label="...">
</div>
<div class="form-check">
<input class="form-check-input position-static" type="radio" name="blankRadio" id="blankRadio1" value="option1" aria-label="...">
</div>
چیدمان
از آنجایی که Bootstrap display: block
و width: 100%
تقریباً برای همه کنترلهای فرم ما اعمال میشود، فرمها بهطور پیشفرض به صورت عمودی قرار میگیرند. می توان از کلاس های اضافی برای تغییر این طرح بر اساس هر فرم استفاده کرد.
گروه ها را تشکیل دهید
کلاس .form-group
ساده ترین راه برای افزودن ساختار به فرم ها است. یک کلاس منعطف ارائه میکند که گروهبندی مناسب برچسبها، کنترلها، متن راهنما اختیاری و پیامهای تایید فرم را تشویق میکند. به طور پیشفرض فقط اعمال margin-bottom
میشود، اما در .form-inline
صورت نیاز، سبکهای اضافی را انتخاب میکند. از آن با <fieldset>
s، <div>
s یا تقریباً هر عنصر دیگری استفاده کنید.
<form>
<div class="form-group">
<label for="formGroupExampleInput">Example label</label>
<input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input placeholder">
</div>
<div class="form-group">
<label for="formGroupExampleInput2">Another label</label>
<input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input placeholder">
</div>
</form>
شبکه فرم
فرم های پیچیده تری را می توان با استفاده از کلاس های گرید ما ساخت. از این ها برای طرح بندی فرم هایی که نیاز به ستون های متعدد، عرض های متنوع و گزینه های تراز اضافی دارند استفاده کنید.
<form>
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name">
</div>
</div>
</form>
ردیف را تشکیل دهید
همچنین میتوانید با .row
، .form-row
تغییری از ردیف شبکه استاندارد ما که ناودان ستونهای پیشفرض را برای طرحبندیهای فشردهتر و فشردهتر جایگزین میکند.
<form>
<div class="form-row">
<div class="col">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Last name">
</div>
</div>
</form>
طرحبندیهای پیچیدهتری را نیز میتوان با سیستم شبکه ایجاد کرد.
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4">
</div>
</div>
<div class="form-group">
<label for="inputAddress">Address</label>
<input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
</div>
<div class="form-group">
<label for="inputAddress2">Address 2</label>
<input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputCity">City</label>
<input type="text" class="form-control" id="inputCity">
</div>
<div class="form-group col-md-4">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-2">
<label for="inputZip">Zip</label>
<input type="text" class="form-control" id="inputZip">
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
فرم افقی
.row
با افزودن کلاس برای تشکیل گروه ها و استفاده از .col-*-*
کلاس ها برای تعیین عرض برچسب ها و کنترل های خود، فرم های افقی را با شبکه ایجاد کنید. حتماً به s .col-form-label
خود <label>
نیز اضافه کنید تا به صورت عمودی با کنترلهای فرم مرتبط خود در مرکز قرار گیرند.
گاهی اوقات، ممکن است لازم باشد از ابزارهای حاشیه یا padding استفاده کنید تا تراز کامل مورد نیاز خود را ایجاد کنید. به عنوان مثال، ما padding-top
برچسب ورودی های رادیویی انباشته خود را حذف کرده ایم تا خط پایه متن را بهتر تراز کنیم.
<form>
<div class="form-group row">
<label for="inputEmail3" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="inputEmail3">
</div>
</div>
<div class="form-group row">
<label for="inputPassword3" class="col-sm-2 col-form-label">Password</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="inputPassword3">
</div>
</div>
<fieldset class="form-group row">
<legend class="col-form-label col-sm-2 float-sm-left pt-0">Radios</legend>
<div class="col-sm-10">
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios1" value="option1" checked>
<label class="form-check-label" for="gridRadios1">
First radio
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios2" value="option2">
<label class="form-check-label" for="gridRadios2">
Second radio
</label>
</div>
<div class="form-check disabled">
<input class="form-check-input" type="radio" name="gridRadios" id="gridRadios3" value="option3" disabled>
<label class="form-check-label" for="gridRadios3">
Third disabled radio
</label>
</div>
</div>
</fieldset>
<div class="form-group row">
<div class="col-sm-10 offset-sm-2">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck1">
<label class="form-check-label" for="gridCheck1">
Example checkbox
</label>
</div>
</div>
</div>
<div class="form-group row">
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">Sign in</button>
</div>
</div>
</form>
اندازه برچسب فرم افقی
حتماً از .col-form-label-sm
یا .col-form-label-lg
به <label>
s یا s خود استفاده کنید تا اندازه و <legend>
را به درستی دنبال کنید ..form-control-lg
.form-control-sm
<form>
<div class="form-group row">
<label for="colFormLabelSm" class="col-sm-2 col-form-label col-form-label-sm">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-sm" id="colFormLabelSm" placeholder="col-form-label-sm">
</div>
</div>
<div class="form-group row">
<label for="colFormLabel" class="col-sm-2 col-form-label">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="colFormLabel" placeholder="col-form-label">
</div>
</div>
<div class="form-group row">
<label for="colFormLabelLg" class="col-sm-2 col-form-label col-form-label-lg">Email</label>
<div class="col-sm-10">
<input type="email" class="form-control form-control-lg" id="colFormLabelLg" placeholder="col-form-label-lg">
</div>
</div>
</form>
اندازه ستون
همانطور که در مثال های قبلی نشان داده شد، سیستم شبکه ما به شما امکان می دهد هر تعداد .col
s را در یک .row
یا قرار دهید .form-row
. آنها عرض موجود را به طور مساوی بین خود تقسیم می کنند. همچنین میتوانید زیرمجموعهای از ستونهای خود را انتخاب کنید تا فضای کمتر یا بیشتر را اشغال کند، در حالی که باقیماندهها .col
بقیه را با کلاسهای ستونی خاص مانند .col-7
.
<form>
<div class="form-row">
<div class="col-7">
<input type="text" class="form-control" placeholder="City">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="State">
</div>
<div class="col">
<input type="text" class="form-control" placeholder="Zip">
</div>
</div>
</form>
اندازه گیری خودکار
مثال زیر از یک ابزار flexbox استفاده میکند تا محتویات را به صورت عمودی در مرکز قرار دهد و آن را تغییر دهد .col
تا .col-auto
ستونهای شما فقط به اندازهای که فضای لازم را اشغال کنند. به عبارت دیگر، ستون خود را بر اساس محتویات اندازه می گیرد.
<form>
<div class="form-row align-items-center">
<div class="col-auto">
<label class="sr-only" for="inlineFormInput">Name</label>
<input type="text" class="form-control mb-2" id="inlineFormInput" placeholder="Jane Doe">
</div>
<div class="col-auto">
<label class="sr-only" for="inlineFormInputGroup">Username</label>
<div class="input-group mb-2">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroup" placeholder="Username">
</div>
</div>
<div class="col-auto">
<div class="form-check mb-2">
<input class="form-check-input" type="checkbox" id="autoSizingCheck">
<label class="form-check-label" for="autoSizingCheck">
Remember me
</label>
</div>
</div>
<div class="col-auto">
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</div>
</div>
</form>
سپس میتوانید آن را یک بار دیگر با کلاسهای ستونی با اندازه خاص، مجدداً مخلوط کنید.
<form>
<div class="form-row align-items-center">
<div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputName">Name</label>
<input type="text" class="form-control" id="inlineFormInputName" placeholder="Jane Doe">
</div>
<div class="col-sm-3 my-1">
<label class="sr-only" for="inlineFormInputGroupUsername">Username</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername" placeholder="Username">
</div>
</div>
<div class="col-auto my-1">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="autoSizingCheck2">
<label class="form-check-label" for="autoSizingCheck2">
Remember me
</label>
</div>
</div>
<div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
و البته کنترل های فرم سفارشی پشتیبانی می شوند.
<form>
<div class="form-row align-items-center">
<div class="col-auto my-1">
<label class="mr-sm-2 sr-only" for="inlineFormCustomSelect">Preference</label>
<select class="custom-select mr-sm-2" id="inlineFormCustomSelect">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="col-auto my-1">
<div class="custom-control custom-checkbox mr-sm-2">
<input type="checkbox" class="custom-control-input" id="customControlAutosizing">
<label class="custom-control-label" for="customControlAutosizing">Remember my preference</label>
</div>
</div>
<div class="col-auto my-1">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
فرم های درون خطی
از .form-inline
کلاس برای نمایش مجموعه ای از برچسب ها، کنترل های فرم و دکمه ها در یک ردیف افقی استفاده کنید. کنترلهای فرم در فرمهای درون خطی کمی از حالتهای پیشفرض آنها متفاوت است.
- کنترلها عبارتند از
display: flex
، هر فضای سفید HTML را جمع میکنند و به شما امکان میدهند کنترل تراز را با ابزارهای فاصله و flexbox ارائه دهید . - کنترلها و گروههای ورودی
width: auto
برای لغو پیشفرض Bootstrap دریافت میکنندwidth: 100%
. - کنترلها فقط در ویوپورتهایی بهخط ظاهر میشوند که حداقل 576 پیکسل عرض دارند تا درگاههای دید باریک در دستگاههای تلفن همراه را در نظر بگیرند.
ممکن است لازم باشد به صورت دستی عرض و تراز کنترلهای فرم را با ابزارهای فاصله (مانند شکل زیر) بررسی کنید. در نهایت، مطمئن شوید که همیشه یک علامت را <label>
با هر کنترل فرم اضافه کنید، حتی اگر لازم است آن را از بازدیدکنندگان غیرصفحهخوان پنهان کنید .sr-only
.
<form class="form-inline">
<label class="sr-only" for="inlineFormInputName2">Name</label>
<input type="text" class="form-control mb-2 mr-sm-2" id="inlineFormInputName2" placeholder="Jane Doe">
<label class="sr-only" for="inlineFormInputGroupUsername2">Username</label>
<div class="input-group mb-2 mr-sm-2">
<div class="input-group-prepend">
<div class="input-group-text">@</div>
</div>
<input type="text" class="form-control" id="inlineFormInputGroupUsername2" placeholder="Username">
</div>
<div class="form-check mb-2 mr-sm-2">
<input class="form-check-input" type="checkbox" id="inlineFormCheck">
<label class="form-check-label" for="inlineFormCheck">
Remember me
</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Submit</button>
</form>
کنترلها و انتخابهای فرم سفارشی نیز پشتیبانی میشوند.
<form class="form-inline">
<label class="my-1 mr-2" for="inlineFormCustomSelectPref">Preference</label>
<select class="custom-select my-1 mr-sm-2" id="inlineFormCustomSelectPref">
<option selected>Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="custom-control custom-checkbox my-1 mr-sm-2">
<input type="checkbox" class="custom-control-input" id="customControlInline">
<label class="custom-control-label" for="customControlInline">Remember my preference</label>
</div>
<button type="submit" class="btn btn-primary my-1">Submit</button>
</form>
جایگزین هایی برای برچسب های پنهان
اگر برای هر ورودی برچسبی وارد نکنید، فناوریهای کمکی مانند صفحهخوانها با فرمهای شما مشکل خواهند داشت. برای این فرمهای درون خطی، میتوانید برچسبها را با استفاده از .sr-only
کلاس پنهان کنید. روشهای جایگزین دیگری برای ارائه برچسب برای فناوریهای کمکی، مانند aria-label
ویژگی aria-labelledby
یا title
ویژگی وجود دارد. اگر هیچ یک از اینها وجود نداشته باشد، فناوری های کمکی ممکن است به استفاده از placeholder
ویژگی متوسل شوند، در صورت وجود، اما توجه داشته باشید که استفاده از آن placeholder
به عنوان جایگزینی برای سایر روش های برچسب گذاری توصیه نمی شود.
متن راهنما
متن راهنما در سطح بلوک در فرم ها را می توان با استفاده از .form-text
(که قبلاً در نسخه 3 شناخته می .help-block
شد) ایجاد کرد. متن راهنمای درون خطی را می توان با استفاده از هر عنصر HTML درون خطی و کلاس های کاربردی مانند .text-muted
.
ارتباط متن راهنما با کنترلهای فرم
متن راهنما باید صریحاً با کنترل فرم مربوط به استفاده از aria-describedby
ویژگی مرتبط باشد. این اطمینان حاصل می کند که فناوری های کمکی - مانند صفحه خوان ها - این متن راهنما را هنگامی که کاربر تمرکز می کند یا وارد کنترل می شود، اعلام می کند.
متن راهنما زیر ورودی ها را می توان با استایل دهی کرد .form-text
. این کلاس شامل display: block
و اضافه کردن حاشیه بالا برای فاصله آسان از ورودی های بالا.
<label for="inputPassword5">Password</label>
<input type="password" id="inputPassword5" class="form-control" aria-describedby="passwordHelpBlock">
<small id="passwordHelpBlock" class="form-text text-muted">
Your password must be 8-20 characters long, contain letters and numbers, and must not contain spaces, special characters, or emoji.
</small>
متن درون خطی می تواند از هر عنصر HTML درون خطی معمولی (خواه یک <small>
, <span>
یا چیز دیگری) با چیزی بیشتر از یک کلاس کاربردی استفاده کند.
<form class="form-inline">
<div class="form-group">
<label for="inputPassword6">Password</label>
<input type="password" id="inputPassword6" class="form-control mx-sm-3" aria-describedby="passwordHelpInline">
<small id="passwordHelpInline" class="text-muted">
Must be 8-20 characters long.
</small>
</div>
</form>
فرم های غیر فعال
disabled
برای جلوگیری از تعامل کاربر و سبکتر نشان دادن آن، ویژگی بولین را روی ورودی اضافه کنید.
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
برای غیرفعال کردن تمام کنترلهای داخل ، disabled
ویژگی را به a اضافه کنید.<fieldset>
<form>
<fieldset disabled>
<legend>Disabled fieldset example</legend>
<div class="form-group">
<label for="disabledTextInput">Disabled input</label>
<input type="text" id="disabledTextInput" class="form-control" placeholder="Disabled input">
</div>
<div class="form-group">
<label for="disabledSelect">Disabled select menu</label>
<select id="disabledSelect" class="form-control">
<option>Disabled select</option>
</select>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="disabledFieldsetCheck" disabled>
<label class="form-check-label" for="disabledFieldsetCheck">
Can't check this
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</fieldset>
</form>
اخطار با لنگرها
مرورگرها همه کنترلهای فرم بومی ( <input>
، <select>
و <button>
عناصر) داخل a <fieldset disabled>
را غیرفعال میکنند و از تعاملات صفحهکلید و ماوس روی آنها جلوگیری میکنند.
با این حال، اگر فرم شما شامل عناصر دکمه مانند سفارشی نیز باشد <a ... class="btn btn-*">
، به آنها فقط سبکی از pointer-events: none
. همانطور که در بخش مربوط به حالت غیرفعال برای دکمهها (و به طور خاص در بخش فرعی عناصر لنگر) ذکر شد، این ویژگی CSS هنوز استاندارد نشده است و به طور کامل در اینترنت اکسپلورر 10 پشتیبانی نمیشود. کنترلهای مبتنی بر لنگر نیز همچنان وجود خواهند داشت. قابل تمرکز و قابل اجرا با استفاده از صفحه کلید. شما باید این کنترلها را بهصورت دستی با افزودن تغییر دهید tabindex="-1"
تا از دریافت فوکوس جلوگیری کنید و aria-disabled="disabled"
وضعیت آنها را به فناوریهای کمکی نشان دهید.
سازگاری بین مرورگرها
در حالی که بوت استرپ این سبکها را در همه مرورگرها اعمال میکند، اینترنت اکسپلورر 11 و پایینتر به طور کامل از disabled
ویژگی روی یک پشتیبانی نمیکند <fieldset>
. از جاوا اسکریپت سفارشی برای غیرفعال کردن مجموعه فیلدها در این مرورگرها استفاده کنید.
اعتبار سنجی
با اعتبارسنجی فرم HTML5 بازخورد ارزشمند و قابل اجرا را به کاربران خود ارائه دهید - در همه مرورگرهای پشتیبانی شده ما موجود است. بازخورد اعتبارسنجی پیشفرض مرورگر را انتخاب کنید یا پیامهای سفارشی را با کلاسهای داخلی و جاوا اسکریپت شروعکننده پیادهسازی کنید.
چگونه کار می کند
در اینجا نحوه عملکرد اعتبار فرم با بوت استرپ آمده است:
- اعتبار سنجی فرم HTML از طریق دو کلاس شبه CSS
:invalid
و:valid
. برای عناصر<input>
،،<select>
و کاربرد<textarea>
دارد. - بوت استرپ دامنه
:invalid
و:valid
استایل ها را به کلاس والد.was-validated
، که معمولاً برای کلاس اعمال می شود، اعمال می کند<form>
. در غیر این صورت، هر فیلد الزامی بدون مقدار در بارگذاری صفحه نامعتبر نشان داده می شود. به این ترتیب، می توانید انتخاب کنید که چه زمانی آنها را فعال کنید (معمولاً پس از ارسال فرم). - برای بازنشانی ظاهر فرم (به عنوان مثال، در مورد ارسالهای فرم پویا با استفاده از AJAX)، پس از ارسال دوباره
.was-validated
کلاس را از کلاس حذف کنید.<form>
- به عنوان یک بازگشت،
.is-invalid
و.is-valid
کلاس ها ممکن است به جای شبه کلاس ها برای اعتبارسنجی سمت سرور استفاده شوند. آنها نیازی به.was-validated
کلاس والدین ندارند. - به دلیل محدودیتهایی که در نحوه عملکرد CSS وجود دارد، ما نمیتوانیم (در حال حاضر) سبکهایی را
<label>
که قبل از کنترل فرم در DOM قرار میگیرد بدون کمک جاوا اسکریپت سفارشی اعمال کنیم. - همه مرورگرهای مدرن از API اعتبارسنجی محدودیت پشتیبانی میکنند، مجموعهای از روشهای جاوا اسکریپت برای اعتبارسنجی کنترلهای فرم.
- پیامهای بازخورد ممکن است از پیشفرضهای مرورگر (برای هر مرورگر متفاوت، و از طریق CSS غیرقابل استایل) یا سبکهای بازخورد سفارشی ما با HTML و CSS اضافی استفاده کنند.
- می توانید پیام های اعتبار سفارشی را
setCustomValidity
در جاوا اسکریپت ارائه دهید.
با در نظر گرفتن این موضوع، دموهای زیر را برای سبکهای اعتبارسنجی فرم سفارشی، کلاسهای سمت سرور اختیاری و پیشفرضهای مرورگر در نظر بگیرید.
سبک های سفارشی
برای پیامهای اعتبارسنجی فرم بوت استرپ سفارشی، باید novalidate
ویژگی بولین را به خود اضافه کنید <form>
. با این کار نکات ابزار بازخورد پیشفرض مرورگر غیرفعال میشود، اما همچنان دسترسی به APIهای تأیید فرم در جاوا اسکریپت را فراهم میکند. سعی کنید فرم زیر را ارسال کنید؛ جاوا اسکریپت ما دکمه ارسال را قطع می کند و بازخورد را به شما ارسال می کند. هنگام تلاش برای ارسال، سبکها :invalid
و :valid
سبکهای اعمال شده روی کنترلهای فرم خود را مشاهده خواهید کرد.
سبکهای بازخورد سفارشی، رنگهای سفارشی، حاشیهها، سبکهای فوکوس و نمادهای پسزمینه را برای ارتباط بهتر بازخورد اعمال میکنند. نمادهای پسزمینه برای <select>
s فقط با .custom-select
و نه در دسترس هستند .form-control
.
<form class="needs-validation" novalidate>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationCustom01">First name</label>
<input type="text" class="form-control" id="validationCustom01" value="Mark" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
<div class="col-md-6 mb-3">
<label for="validationCustom02">Last name</label>
<input type="text" class="form-control" id="validationCustom02" value="Otto" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationCustom03">City</label>
<input type="text" class="form-control" id="validationCustom03" required>
<div class="invalid-feedback">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom04">State</label>
<select class="custom-select" id="validationCustom04" required>
<option selected disabled value="">Choose...</option>
<option>...</option>
</select>
<div class="invalid-feedback">
Please select a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationCustom05">Zip</label>
<input type="text" class="form-control" id="validationCustom05" required>
<div class="invalid-feedback">
Please provide a valid zip.
</div>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="invalidCheck" required>
<label class="form-check-label" for="invalidCheck">
Agree to terms and conditions
</label>
<div class="invalid-feedback">
You must agree before submitting.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
<script>
// Example starter JavaScript for disabling form submissions if there are invalid fields
(function() {
'use strict';
window.addEventListener('load', function() {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
</script>
پیش فرض های مرورگر
علاقه ای به پیام های بازخورد تأیید اعتبار سفارشی یا نوشتن جاوا اسکریپت برای تغییر رفتارهای فرم ندارید؟ خیلی خوب است، می توانید از پیش فرض های مرورگر استفاده کنید. سعی کنید فرم زیر را ارسال کنید. بسته به مرورگر و سیستم عامل خود، سبک کمی متفاوت از بازخورد را مشاهده خواهید کرد.
در حالی که این سبکهای بازخورد را نمیتوان با CSS سبکسازی کرد، همچنان میتوانید متن بازخورد را از طریق جاوا اسکریپت سفارشی کنید.
<form>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationDefault01">First name</label>
<input type="text" class="form-control" id="validationDefault01" value="Mark" required>
</div>
<div class="col-md-6 mb-3">
<label for="validationDefault02">Last name</label>
<input type="text" class="form-control" id="validationDefault02" value="Otto" required>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationDefault03">City</label>
<input type="text" class="form-control" id="validationDefault03" required>
</div>
<div class="col-md-3 mb-3">
<label for="validationDefault04">State</label>
<select class="custom-select" id="validationDefault04" required>
<option selected disabled value="">Choose...</option>
<option>...</option>
</select>
</div>
<div class="col-md-3 mb-3">
<label for="validationDefault05">Zip</label>
<input type="text" class="form-control" id="validationDefault05" required>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id="invalidCheck2" required>
<label class="form-check-label" for="invalidCheck2">
Agree to terms and conditions
</label>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
سمت سرور
ما استفاده از اعتبار سنجی سمت سرویس گیرنده را توصیه می کنیم، اما در صورت نیاز به اعتبارسنجی سمت سرور، می توانید فیلدهای فرم نامعتبر و معتبر را با .is-invalid
و نشان دهید .is-valid
. توجه داشته باشید که .invalid-feedback
با این کلاس ها نیز پشتیبانی می شود.
برای فیلدهای نامعتبر، مطمئن شوید که بازخورد/پیام خطای نامعتبر با فیلد فرم مربوطه با استفاده از aria-describedby
. این ویژگی اجازه می دهد تا بیش از یک id
مورد ارجاع داده شود، در صورتی که فیلد قبلاً به متن فرم اضافی اشاره کند.
<form>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationServer01">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="col-md-6 mb-3">
<label for="validationServer02">Last name</label>
<input type="text" class="form-control is-valid" id="validationServer02" value="Otto" required>
<div class="valid-feedback">
Looks good!
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationServer03">City</label>
<input type="text" class="form-control is-invalid" id="validationServer03" aria-describedby="validationServer03Feedback" required>
<div id="validationServer03Feedback" class="invalid-feedback">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationServer04">State</label>
<select class="custom-select is-invalid" id="validationServer04" aria-describedby="validationServer04Feedback" required>
<option selected disabled value="">Choose...</option>
<option>...</option>
</select>
<div id="validationServer04Feedback" class="invalid-feedback">
Please select a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationServer05">Zip</label>
<input type="text" class="form-control is-invalid" id="validationServer05" aria-describedby="validationServer05Feedback" required>
<div id="validationServer05Feedback" class="invalid-feedback">
Please provide a valid zip.
</div>
</div>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input is-invalid" type="checkbox" value="" id="invalidCheck3" aria-describedby="invalidCheck3Feedback" required>
<label class="form-check-label" for="invalidCheck3">
Agree to terms and conditions
</label>
<div id="invalidCheck3Feedback" class="invalid-feedback">
You must agree before submitting.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
عناصر پشتیبانی شده
سبکهای اعتبارسنجی برای کنترلها و مؤلفههای فرم زیر در دسترس هستند:
<input>
s و<textarea>
s با.form-control
<select>
با.form-control
یا.custom-select
.form-check
س.custom-checkbox
s و.custom-radio
s.custom-file
<form class="was-validated">
<div class="mb-3">
<label for="validationTextarea">Textarea</label>
<textarea class="form-control is-invalid" id="validationTextarea" placeholder="Required example textarea" required></textarea>
<div class="invalid-feedback">
Please enter a message in the textarea.
</div>
</div>
<div class="custom-control custom-checkbox mb-3">
<input type="checkbox" class="custom-control-input" id="customControlValidation1" required>
<label class="custom-control-label" for="customControlValidation1">Check this custom checkbox</label>
<div class="invalid-feedback">Example invalid feedback text</div>
</div>
<div class="custom-control custom-radio">
<input type="radio" class="custom-control-input" id="customControlValidation2" name="radio-stacked" required>
<label class="custom-control-label" for="customControlValidation2">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio mb-3">
<input type="radio" class="custom-control-input" id="customControlValidation3" name="radio-stacked" required>
<label class="custom-control-label" for="customControlValidation3">Or toggle this other custom radio</label>
<div class="invalid-feedback">More example invalid feedback text</div>
</div>
<div class="mb-3">
<select class="custom-select" required>
<option value="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<div class="invalid-feedback">Example invalid custom select feedback</div>
</div>
<div class="custom-file mb-3">
<input type="file" class="custom-file-input" id="validatedCustomFile" required>
<label class="custom-file-label" for="validatedCustomFile">Choose file...</label>
<div class="invalid-feedback">Example invalid custom file feedback</div>
</div>
<div class="mb-3">
<div class="input-group is-invalid">
<div class="input-group-prepend">
<span class="input-group-text" id="validatedInputGroupPrepend">@</span>
</div>
<input type="text" class="form-control is-invalid" aria-describedby="validatedInputGroupPrepend" required>
</div>
<div class="invalid-feedback">
Example invalid input group feedback
</div>
</div>
<div class="mb-3">
<div class="input-group is-invalid">
<div class="input-group-prepend">
<label class="input-group-text" for="validatedInputGroupSelect">Options</label>
</div>
<select class="custom-select" id="validatedInputGroupSelect" required>
<option value="">Choose...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
<div class="invalid-feedback">
Example invalid input group feedback
</div>
</div>
<div class="input-group is-invalid">
<div class="custom-file">
<input type="file" class="custom-file-input" id="validatedInputGroupCustomFile" required>
<label class="custom-file-label" for="validatedInputGroupCustomFile">Choose file...</label>
</div>
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="button">Button</button>
</div>
</div>
<div class="invalid-feedback">
Example invalid input group feedback
</div>
</form>
نکات ابزار
اگر طرحبندی فرم شما اجازه میدهد، میتوانید کلاسها را با .{valid|invalid}-feedback
کلاسها تعویض کنید .{valid|invalid}-tooltip
تا بازخورد اعتبارسنجی را در یک راهنمای ابزار سبکدهی شده نشان دهید. حتماً یک والد position: relative
برای موقعیتیابی راهنمای ابزار همراه داشته باشید. در مثال زیر، کلاسهای ستون ما قبلاً این مورد را دارند، اما پروژه شما ممکن است به یک راهاندازی جایگزین نیاز داشته باشد.
<form class="needs-validation" novalidate>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationTooltip01">First name</label>
<input type="text" class="form-control" id="validationTooltip01" value="Mark" required>
<div class="valid-tooltip">
Looks good!
</div>
</div>
<div class="col-md-6 mb-3">
<label for="validationTooltip02">Last name</label>
<input type="text" class="form-control" id="validationTooltip02" value="Otto" required>
<div class="valid-tooltip">
Looks good!
</div>
</div>
</div>
<div class="form-row">
<div class="col-md-6 mb-3">
<label for="validationTooltip03">City</label>
<input type="text" class="form-control" id="validationTooltip03" required>
<div class="invalid-tooltip">
Please provide a valid city.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip04">State</label>
<select class="custom-select" id="validationTooltip04" required>
<option selected disabled value="">Choose...</option>
<option>...</option>
</select>
<div class="invalid-tooltip">
Please select a valid state.
</div>
</div>
<div class="col-md-3 mb-3">
<label for="validationTooltip05">Zip</label>
<input type="text" class="form-control" id="validationTooltip05" required>
<div class="invalid-tooltip">
Please provide a valid zip.
</div>
</div>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
سفارشی کردن
حالت های اعتبارسنجی را می توان از طریق Sass با $form-validation-states
نقشه سفارشی کرد. _variables.scss
این نقشه Sass که در فایل ما قرار دارد، برای ایجاد حالت های پیش فرض valid
/ invalid
اعتبار سنجی حلقه زده می شود. شامل یک نقشه تو در تو برای سفارشی کردن رنگ و نماد هر ایالت است. در حالی که هیچ حالت دیگری توسط مرورگرها پشتیبانی نمی شود، کسانی که از سبک های سفارشی استفاده می کنند می توانند به راحتی بازخورد فرم پیچیده تری را اضافه کنند.
لطفاً توجه داشته باشید که ما سفارشی کردن این مقادیر را بدون تغییر form-validation-state
mixin توصیه نمی کنیم.
// Sass map from `_variables.scss`
// Override this and recompile your Sass to generate different states
$form-validation-states: map-merge(
(
"valid": (
"color": $form-feedback-valid-color,
"icon": $form-feedback-icon-valid
),
"invalid": (
"color": $form-feedback-invalid-color,
"icon": $form-feedback-icon-invalid
)
),
$form-validation-states
);
// Loop from `_forms.scss`
// Any modifications to the above Sass map will be reflected in your compiled
// CSS via this loop.
@each $state, $data in $form-validation-states {
@include form-validation-state($state, map-get($data, color), map-get($data, icon));
}
اعتبار سنجی گروه ورودی
برای تشخیص اینکه چه عناصری به گوشه های گرد در داخل یک گروه ورودی با اعتبارسنجی نیاز دارند، یک گروه ورودی به یک .has-validation
کلاس اضافی نیاز دارد.
<div class="input-group has-validation">
<div class="input-group-prepend">
<span class="input-group-text">@</span>
</div>
<input type="text" class="form-control" required>
<div class="invalid-feedback">
Please choose a username.
</div>
</div>
فرم های سفارشی
برای سفارشی سازی بیشتر و سازگاری بین مرورگرها، از عناصر فرم کاملاً سفارشی ما برای جایگزینی پیش فرض های مرورگر استفاده کنید. آنها بر روی نشانهگذاری معنایی و قابل دسترس ساخته شدهاند، بنابراین جایگزینی محکم برای هر گونه کنترل فرم پیشفرض هستند.
چک باکس ها و رادیوها
هر چک باکس و رادیو <input>
و <label>
جفت شدن در یک علامت پیچیده شده است <div>
تا کنترل سفارشی ما ایجاد شود. از نظر ساختاری، این همان رویکرد پیش فرض ما .form-check
است.
ما از انتخابگر خواهر و برادر ( ~
) برای همه <input>
حالت های خود استفاده می کنیم - مانند - تا :checked
به درستی نشانگر فرم سفارشی خود را استایل بندی کنیم. هنگامی که با .custom-control-label
کلاس ترکیب میشویم، میتوانیم متن را برای هر آیتم بر اساس وضعیت <input>
' استایل دهی کنیم.
<input>
پیش فرض را با مخفی می کنیم opacity
و .custom-control-label
برای ساختن یک نشانگر فرم سفارشی جدید در جای خود با ::before
و ::after
استفاده می کنیم. متأسفانه ما نمیتوانیم یک سفارشی فقط از آن بسازیم <input>
زیرا CSS content
روی آن عنصر کار نمیکند.
در حالتهای علامتگذاری شده، از نمادهای SVG تعبیهشده base64 از Open Iconic استفاده میکنیم. این بهترین کنترل را برای استایل و موقعیت یابی در مرورگرها و دستگاه ها در اختیار ما قرار می دهد.
چک باکس ها
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheck1">
<label class="custom-control-label" for="customCheck1">Check this custom checkbox</label>
</div>
چک باکس های سفارشی همچنین می توانند از :indeterminate
کلاس شبه استفاده کنند که به صورت دستی از طریق جاوا اسکریپت تنظیم شود (هیچ ویژگی HTML موجود برای تعیین آن وجود ندارد).
اگر از jQuery استفاده می کنید، چیزی شبیه به این کافی است:
$('.your-checkbox').prop('indeterminate', true)
رادیوها
<div class="custom-control custom-radio">
<input type="radio" id="customRadio1" name="customRadio" class="custom-control-input">
<label class="custom-control-label" for="customRadio1">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" id="customRadio2" name="customRadio" class="custom-control-input">
<label class="custom-control-label" for="customRadio2">Or toggle this other custom radio</label>
</div>
درون خطی
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline1" name="customRadioInline" class="custom-control-input">
<label class="custom-control-label" for="customRadioInline1">Toggle this custom radio</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="customRadioInline2" name="customRadioInline" class="custom-control-input">
<label class="custom-control-label" for="customRadioInline2">Or toggle this other custom radio</label>
</div>
معلول
چک باکس های سفارشی و رادیوها نیز می توانند غیرفعال شوند. disabled
ویژگی Boolean را به آن اضافه کنید <input>
و نشانگر سفارشی و توضیحات برچسب به طور خودکار استایل دهی می شود.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="customCheckDisabled1" disabled>
<label class="custom-control-label" for="customCheckDisabled1">Check this custom checkbox</label>
</div>
<div class="custom-control custom-radio">
<input type="radio" name="radioDisabled" id="customRadioDisabled2" class="custom-control-input" disabled>
<label class="custom-control-label" for="customRadioDisabled2">Toggle this custom radio</label>
</div>
سوئیچ ها
یک سوئیچ دارای نشانه گذاری یک چک باکس سفارشی است اما از .custom-switch
کلاس برای ارائه یک سوئیچ تعویض استفاده می کند. سوئیچ ها نیز از این disabled
ویژگی پشتیبانی می کنند.
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" id="customSwitch1">
<label class="custom-control-label" for="customSwitch1">Toggle this switch element</label>
</div>
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" disabled id="customSwitch2">
<label class="custom-control-label" for="customSwitch2">Disabled switch element</label>
</div>
منو را انتخاب کنید
منوهای سفارشی <select>
فقط به یک کلاس سفارشی نیاز دارند .custom-select
تا سبک های سفارشی را فعال کنند. سبک های سفارشی به <select>
ظاهر اولیه محدود می شوند و <option>
به دلیل محدودیت های مرورگر نمی توانند s را تغییر دهند.
<select class="custom-select">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
همچنین میتوانید از میان انتخابهای سفارشی کوچک و بزرگ انتخاب کنید تا با ورودیهای متنی با اندازه مشابه مطابقت داشته باشد.
<select class="custom-select custom-select-lg mb-3">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
<select class="custom-select custom-select-sm">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
ویژگی multiple
نیز پشتیبانی می شود:
<select class="custom-select" multiple>
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
همانطور که size
ویژگی است:
<select class="custom-select" size="3">
<option selected>Open this select menu</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
دامنه
<input type="range">
ایجاد کنترل های سفارشی .custom-range
با آهنگ (پس زمینه) و انگشت شست (مقدار) هر دو به گونه ای طراحی شده اند که در مرورگرها یکسان ظاهر شوند. از آنجایی که فقط اینترنت اکسپلورر و فایرفاکس از "پر کردن" مسیر خود از سمت چپ یا راست انگشت شست به عنوان وسیله ای برای نشان دادن بصری پیشرفت پشتیبانی می کنند، ما در حال حاضر از آن پشتیبانی نمی کنیم.
<label for="customRange1">Example range</label>
<input type="range" class="custom-range" id="customRange1">
ورودی های محدوده دارای مقادیر ضمنی برای min
و max
— 0
و 100
هستند. شما می توانید مقادیر جدیدی را برای کسانی که از ویژگی های min
and استفاده می کنند تعیین کنید max
.
<label for="customRange2">Example range</label>
<input type="range" class="custom-range" min="0" max="5" id="customRange2">
به طور پیش فرض، محدوده ورودی "snap" را به مقادیر صحیح وارد می کند. برای تغییر این می توانید step
مقداری را مشخص کنید. در مثال زیر تعداد مراحل را با استفاده از 2 برابر می کنیم step="0.5"
.
<label for="customRange3">Example range</label>
<input type="range" class="custom-range" min="0" max="5" step="0.5" id="customRange3">
مرورگر فایل
ورودی فایل در میان دستهای است که به جاوا اسکریپت اضافی نیاز دارد، اگر میخواهید آنها را با انتخاب فایل کاربردی… و متن نام فایل انتخابشده وصل کنید.
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Choose file</label>
</div>
فایل پیش فرض را <input>
از طریق مخفی می کنیم opacity
و به جای آن به آن استایل می دهیم <label>
. دکمه تولید و با ::after
. در نهایت، ما a width
and height
on را <input>
برای فاصله مناسب برای محتوای اطراف اعلام می کنیم.
ترجمه یا سفارشی کردن رشته ها با SCSS
شبه :lang()
کلاس برای امکان ترجمه متن "مرور" به زبان های دیگر استفاده می شود. با تگ زبان مربوطه و رشته های محلی شده، ورودی ها را به $custom-file-text
متغیر Sass لغو یا اضافه کنید . رشته های انگلیسی را می توان به همان روش سفارشی کرد. به عنوان مثال، در اینجا نحوه اضافه کردن ترجمه اسپانیایی (کد زبان اسپانیایی این است ):es
$custom-file-text: (
en: "Browse",
es: "Elegir"
);
در اینجا lang(es)
در مورد ورودی فایل سفارشی برای ترجمه اسپانیایی آمده است:
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFileLang" lang="es">
<label class="custom-file-label" for="customFileLang">Seleccionar Archivo</label>
</div>
برای اینکه متن صحیح نشان داده شود، باید زبان سند خود (یا زیردرخت آن) را به درستی تنظیم کنید. این را می توان با استفاده از lang
ویژگی روی <html>
عنصر یا Content-Language
هدر HTTP در میان روش های دیگر انجام داد.
ترجمه یا سفارشی سازی رشته ها با HTML
Bootstrap همچنین راهی برای ترجمه متن «Browse» در HTML با data-browse
ویژگیهایی که میتواند به برچسب ورودی سفارشی اضافه شود (به عنوان مثال در هلندی) ارائه میکند:
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFileLangHTML">
<label class="custom-file-label" for="customFileLangHTML" data-browse="Bestand kiezen">Voeg je document toe</label>
</div>