Приклади та вказівки щодо використання стилів керування формами, параметрів макета та настроюваних компонентів для створення різноманітних форм.
Огляд
Елементи керування формою Bootstrap розширюють наші стилі форми Rebooted за допомогою класів. Використовуйте ці класи, щоб увімкнути їхні налаштовані відображення для більш узгодженого відтворення в усіх браузерах і пристроях.
Обов’язково використовуйте відповідний typeатрибут для всіх введених даних (наприклад, emailдля адреси електронної пошти чи numberдля числової інформації), щоб скористатися новими елементами керування введенням, як-от підтвердження електронної пошти, вибір номера тощо.
Ось короткий приклад для демонстрації стилів форм Bootstrap. Продовжуйте читати документацію про необхідні класи, макет форми тощо.
Елементи керування формою
Елементи керування текстовою формою, такі як <input>s, <select>s і <textarea>s, стилізуються за допомогою .form-controlкласу. Включено стилі для загального вигляду, стану фокусування, розміру тощо.
Обов’язково вивчіть наші спеціальні форми , щоб покращити стиль <select>.
Для введення файлів замініть .form-controlна .form-control-file.
Розміри
Встановіть висоти за допомогою класів, таких як .form-control-lgі .form-control-sm.
Лише для читання
Додайте readonlyлогічний атрибут до вхідних даних, щоб запобігти зміні значення вхідних даних. Вхідні дані лише для читання виглядають світлішими (як і вимкнені входи), але зберігають стандартний курсор.
Звичайний текст лише для читання
Якщо ви хочете, щоб <input readonly>елементи у вашій формі були оформлені як звичайний текст, скористайтеся .form-control-plaintextкласом, щоб видалити стандартний стиль поля форми та зберегти правильні поля та відступи.
Діапазон входів
Встановіть горизонтально прокручуваний діапазон введення за допомогою .form-control-range.
Прапорці та радіо
Стандартні прапорці та радіостанції покращено за допомогою єдиного класу для обох типів введення, який покращує макет і поведінку їхніх елементів.form-check HTML . Прапорці призначені для вибору одного або кількох варіантів у списку, а радіо — для вибору одного варіанту з багатьох.
Підтримуються вимкнені прапорці та перемикачі, але щоб забезпечити not-allowedкурсор під час наведення курсора на батьківський <label>, вам потрібно буде додати disabledатрибут до .form-check-input. Атрибут disabled застосує світліший колір, щоб допомогти вказати стан введення.
Прапорці та радіостанції розроблено для підтримки перевірки форм на основі HTML і надання стислих доступних міток. Таким чином, наші <input>s і <label>s є братськими елементами на відміну від елементів <input>усередині a <label>. Це трохи докладніше, оскільки ви повинні вказати атрибути idand for, щоб пов’язати <input>and <label>.
За замовчуванням (стосований)
За замовчуванням будь-яка кількість прапорців і радіоприймачів, які є безпосередніми однорідними елементами, буде розміщено вертикально та відповідно розподілено з .form-check.
В лінію
Згрупуйте прапорці або радіостанції в одному горизонтальному рядку, додавши .form-check-inlineдо будь-якого .form-check.
Без ярликів
Додайте .position-staticдо вхідних даних .form-check, які не мають тексту мітки. Пам’ятайте, що для допоміжних технологій необхідно надати певну форму мітки (наприклад, використання aria-label).
Макет
Оскільки Bootstrap застосовується майже display: blockдо width: 100%всіх наших елементів керування формами, форми за замовчуванням складатимуться вертикально. Додаткові класи можна використовувати, щоб змінювати цей макет на основі кожної форми.
Сформуйте групи
Клас .form-group— це найпростіший спосіб додати деяку структуру до форм. Він забезпечує гнучкий клас, який заохочує правильне групування міток, елементів керування, додаткового тексту довідки та повідомлень про перевірку форми. За замовчуванням він застосовує лише margin-bottom, але за потреби підбирає додаткові стилі .form-inline. Використовуйте його з <fieldset>s, <div>s або майже будь-яким іншим елементом.
Сітка форми
Більш складні форми можна створювати за допомогою наших класів сітки. Використовуйте їх для макетів форм, які вимагають кількох стовпців, різної ширини та додаткових параметрів вирівнювання.
Сформувати ряд
Ви також можете замінити .rowна .form-row, варіацію нашого стандартного рядка сітки, яка замінює жолоби стовпців за замовчуванням для більш вузьких і компактніших макетів.
Більш складні макети також можна створювати за допомогою сітки.
Горизонтальна форма
Створюйте горизонтальні форми за допомогою сітки, додаючи .rowкласи до груп форм і використовуючи .col-*-*класи для визначення ширини міток і елементів керування. Обов’язково додайте .col-form-labelтакож до своїх <label>s, щоб вони були вертикально відцентровані разом із відповідними елементами керування формою.
Іноді вам може знадобитися використовувати утиліти полів або відступів, щоб створити необхідне ідеальне вирівнювання. Наприклад, ми видалили padding-topмітку з наших складених радіовходів, щоб краще вирівняти базову лінію тексту.
Розмір етикетки горизонтальної форми
Обов’язково використовуйте .col-form-label-smабо .col-form-label-lgдля своїх <label>s або <legend>s, щоб правильно дотримуватися розміру .form-control-lgта .form-control-sm.
Розміри стовпців
Як показано в попередніх прикладах, наша система сітки дозволяє розміщувати будь-яку кількість .cols всередині a .rowабо .form-row. Вони порівну розподілять доступну ширину між собою. Ви також можете вибрати підмножину ваших стовпців, яка займатиме більше або менше місця, тоді як решта .cols рівномірно розділить решту, з конкретними класами стовпців, як-от .col-7.
Авторозмір
У прикладі нижче використовується утиліта flexbox для вертикального центрування вмісту та змін .col, щоб .col-autoваші стовпці займали стільки місця, скільки потрібно. Іншими словами, розмір стовпця залежить від вмісту.
Потім ви можете ще раз перемішати це з класами стовпців, що залежать від розміру.
Використовуйте .form-inlineклас для відображення серії міток, елементів керування форми та кнопок в одному горизонтальному рядку. Елементи керування формами у вбудованих формах дещо відрізняються від стандартних станів.
Елементи керування — це display: flexзгортання будь-якого білого простору HTML і надання можливості керування вирівнюванням за допомогою утиліт пробілу та flexbox .
Елементи керування та групи вводу отримують width: auto, щоб замінити значення за замовчуванням Bootstrap width: 100%.
Елементи керування відображаються вбудовано лише у вікнах перегляду шириною принаймні 576 пікселів, щоб врахувати вузькі вікна перегляду на мобільних пристроях.
Можливо, вам знадобиться вручну змінити ширину та вирівнювання окремих елементів керування форми за допомогою утиліт інтервалів (як показано нижче). Нарешті, обов’язково завжди включайте <label>до кожного елемента керування форми, навіть якщо вам потрібно приховати його від відвідувачів, які не використовують програму зчитування з екрана, за допомогою .sr-only.
Також підтримуються користувацькі елементи керування та вибору форм.
Альтернативи прихованим міткам
Допоміжні технології, такі як програми зчитування з екрана, матимуть проблеми з вашими формами, якщо ви не включите мітку для кожного введення. Для цих вбудованих форм ви можете приховати мітки за допомогою .sr-onlyкласу. Існують інші альтернативні методи надання мітки для допоміжних технологій, наприклад атрибут aria-label, aria-labelledbyабо . titleЯкщо жоден із них відсутній, допоміжні технології можуть вдатися до використання placeholderатрибута, якщо він присутній, але зауважте, що використовувати placeholderяк заміну для інших методів маркування не рекомендується.
Текст довідки
Текст довідки на рівні блоку у формах можна створити за допомогою .form-text(раніше відомого як .help-blockу v3). Вбудований текст довідки можна гнучко реалізувати за допомогою будь-якого вбудованого елемента HTML і класів утиліт, як-от .text-muted.
Пов’язування довідкового тексту з елементами керування форми
Текст довідки має бути явно пов’язаний із елементом керування форми, до якого він відноситься за допомогою aria-describedbyатрибута. Це гарантує, що допоміжні технології, такі як програми зчитування з екрана, оголошуватимуть цей довідковий текст, коли користувач сфокусується або введе елемент керування.
Текст довідки під введеннями можна стилізувати за допомогою .form-text. Цей клас включає display: blockта додає деяке верхнє поле для легкого відриву від вхідних даних вище.
Ваш пароль має містити 8-20 символів, містити літери та цифри та не містити пробілів, спеціальних символів чи смайлів.
Вбудований текст може використовувати будь-який типовий вбудований HTML-елемент (будь то <small>, <span>, або щось інше) лише з класом утиліти.
Відключені форми
Додайте disabledлогічний атрибут до введення, щоб запобігти взаємодії користувача та зробити його легшим.
Додайте disabledатрибут до a, <fieldset>щоб вимкнути всі елементи керування всередині.
Застереження з якорями
За замовчуванням браузери розглядатимуть усі власні елементи керування форми ( <input>, <select>та <button>елементи) всередині <fieldset disabled>як вимкнені, запобігаючи взаємодії з ними як клавіатурою, так і мишею. Однак, якщо ваша форма також містить <a ... class="btn btn-*">елементи, їм буде надано лише стиль pointer-events: none. Як зазначалося в розділі про вимкнений стан для кнопок (і зокрема в підрозділі для елементів прив’язки), ця властивість CSS ще не стандартизована та не повністю підтримується в Internet Explorer 10, і не запобігатиме користувачам клавіатури здатні зосередитися або активувати ці посилання. Щоб бути в безпеці, використовуйте спеціальний JavaScript, щоб вимкнути такі посилання.
Кросбраузерність
Хоча Bootstrap застосовуватиме ці стилі в усіх браузерах, Internet Explorer 11 і нижче не повністю підтримують disabledатрибут у <fieldset>. Використовуйте спеціальний JavaScript, щоб вимкнути набір полів у цих браузерах.
Перевірка
Надайте своїм користувачам цінні, практичні відгуки за допомогою перевірки форми HTML5, яка доступна в усіх підтримуваних нами браузерах . Вибирайте з відгуків про перевірку веб-переглядача за замовчуванням або запроваджуйте спеціальні повідомлення за допомогою наших вбудованих класів і початкового JavaScript.
Наразі ми рекомендуємо використовувати власні стилі перевірки, оскільки стандартні повідомлення перевірки веб-переглядача не завжди піддаються допоміжним технологіям у всіх веб-переглядачах (зокрема, у Chrome на настільних комп’ютерах і мобільних пристроях).
Як це працює
Ось як перевірка форми працює з Bootstrap:
Перевірка форми HTML застосовується через два псевдокласи CSS :invalidі :valid. Це стосується елементів <input>, <select>, і .<textarea>
Bootstrap визначає область :invalidі :validстилі для батьківського .was-validatedкласу, зазвичай застосовуваного до <form>. В іншому випадку будь-яке обов’язкове поле без значення під час завантаження сторінки відображатиметься як недійсне. Таким чином, ви можете вибрати, коли їх активувати (зазвичай після спроби надсилання форми).
Щоб скинути зовнішній вигляд форми (наприклад, у разі динамічного надсилання форми за допомогою AJAX), видаліть .was-validatedклас із <form>знову після надсилання.
Як запасний варіант можна .is-invalidвикористовувати .is-validкласи замість псевдокласів для перевірки на стороні сервера . Їм не потрібен .was-validatedбатьківський клас.
Через обмеження в тому, як працює CSS, ми не можемо (наразі) застосувати стилі до <label>елемента, який стоїть перед елементом керування формою в DOM, без допомоги спеціального JavaScript.
Усі сучасні браузери підтримують API перевірки обмежень , ряд методів JavaScript для перевірки елементів керування форми.
У повідомленнях відгуків можуть використовуватися стандартні параметри браузера (різні для кожного браузера та не можна стилізувати за допомогою CSS) або наші власні стилі відгуків із додатковими HTML і CSS.
Ви можете надати спеціальні повідомлення про дійсність setCustomValidityу JavaScript.
Пам’ятаючи про це, розгляньте наступні демонстрації наших користувацьких стилів перевірки форм, додаткових класів на стороні сервера та стандартних параметрів браузера.
Спеціальні стилі
Для користувацьких повідомлень про перевірку форми Bootstrap вам потрібно буде додати novalidateлогічний атрибут до вашого <form>. Це вимикає спливаючі підказки браузера за замовчуванням, але все ще забезпечує доступ до API перевірки форми в JavaScript. Спробуйте надіслати форму нижче; наш JavaScript перехопить кнопку надсилання та передасть вам відгук.
Під час спроби надіслати ви побачите стилі :invalidта :valid, застосовані до елементів керування форми.
Стандартні параметри браузера
Не зацікавлені у спеціальних повідомленнях із відгуками про перевірку чи написанні JavaScript для зміни поведінки форм? Все добре, ви можете використовувати параметри браузера за замовчуванням. Спробуйте надіслати форму нижче. Залежно від вашого браузера та ОС ви побачите дещо інший стиль відгуків.
Хоча ці стилі відгуків не можна стилізувати за допомогою CSS, ви все одно можете налаштувати текст відгуку за допомогою JavaScript.
Сторона сервера
Ми рекомендуємо використовувати перевірку на стороні клієнта, але якщо вам потрібна сторона сервера, ви можете вказати недійсні та дійсні поля форми за допомогою .is-invalidта .is-valid. Зауважте, що .invalid-feedbackтакож підтримується цими класами.
Підтримувані елементи
Наші зразки форм показують рідні текстові <input>вище, але стилі перевірки форми також доступні для наших користувацьких елементів керування формою.
Підказки
Якщо макет вашої форми це дозволяє, ви можете поміняти .{valid|invalid}-feedbackкласи на .{valid|invalid}-tooltipкласи, щоб відобразити відгук перевірки у стилізованій спливаючій підказці. Переконайтеся, що на position: relativeньому є батьківський елемент для позиціонування підказки. У наведеному нижче прикладі наші класи стовпців уже мають це, але ваш проект може потребувати альтернативного налаштування.
Спеціальні форми
Щоб отримати ще більше налаштувань і узгодженості між браузерами, використовуйте наші повністю налаштовані елементи форми, щоб замінити параметри браузера за замовчуванням. Вони створені на основі семантичної та доступної розмітки, тож є надійною заміною будь-якого елемента керування формою за замовчуванням.
Прапорці та радіо
Кожен прапорець і радіо загорнуті в один <div>із братом <span>для створення нашого спеціального елемента керування та <label>для супровідного тексту. Структурно це той самий підхід, що й наш за замовчуванням .form-check.
Ми використовуємо однорідний селектор ( ~) для всіх наших <input>станів, наприклад, :checkedщоб правильно стилізувати наш власний індикатор форми. У поєднанні з .custom-control-labelкласом ми також можемо стилізувати текст для кожного елемента на основі стану <input>'s.
Ми приховуємо значення за замовчуванням за <input>допомогою opacityта використовуємо .custom-control-labelдля створення нового спеціального індикатора форми замість нього за допомогою ::beforeта ::after. На жаль, ми не можемо створити спеціальний елемент лише з, <input>оскільки CSS contentне працює з цим елементом.
У позначених станах ми використовуємо вбудовані піктограми SVG base64 із Open Iconic . Це дає нам найкращий контроль для стилізації та позиціонування в браузерах і пристроях.
Прапорці
Спеціальні прапорці також можуть використовувати :indeterminateпсевдоклас, коли вручну встановлюються за допомогою JavaScript (немає доступного атрибута HTML для його визначення).
Якщо ви використовуєте jQuery, чогось подібного має бути достатньо:
Радіостанції
В лінію
Вимкнено
Користувацькі прапорці та радіо також можна вимкнути. Додайте disabledлогічний атрибут до , <input>і настроюваний індикатор і опис мітки будуть автоматично стилізовані.
Виберіть меню
Користувацькі <select>меню потребують лише спеціального класу, .custom-selectщоб активувати власні стилі. Настроювані стилі обмежені <select>початковим виглядом і не можуть змінювати <option>s через обмеження браузера.
Ви також можете вибрати малий і великий настроюваний вибір, щоб відповідати нашим текстовим введенням такого ж розміру.
Атрибут multipleтакож підтримується:
Як і sizeатрибут:
Діапазон
Створіть власні <input type="range">елементи керування за допомогою .custom-range. Доріжка (фон) і великий палець (значення) оформлені так, щоб виглядати однаково в усіх браузерах. Оскільки лише IE та Firefox підтримують «заповнення» доріжки лівим або правим кутом великого пальця як засіб візуальної індикації прогресу, наразі ми не підтримуємо це.
Вхідні дані діапазону мають неявні значення для minта max— 0і 100відповідно. Ви можете вказати нові значення для тих, хто використовує атрибути minі .max
За замовчуванням вхідні дані діапазону «прив’язуються» до цілих значень. Щоб змінити це, ви можете вказати stepзначення. У наведеному нижче прикладі ми подвоюємо кількість кроків за допомогою step="0.5".
Браузер файлів
Введення файлу є найскладнішим із усіх і потребує додаткового JavaScript, якщо ви хочете підключити їх із функціональним вибором файлу … та текстом імені вибраного файлу.
Ми ховаємо файл за замовчуванням за <input>допомогою opacity, а замість цього стилізуємо <label>. Кнопка генерується та позиціонується за допомогою ::after. Нарешті, ми оголошуємо widthта heightдля <input>відповідного інтервалу для навколишнього вмісту.
Переклад або налаштування рядків
:lang()Псевдоклас використовується для перекладу тексту «Огляд» іншими мовами . Замініть або додайте записи до $custom-file-textзмінної Sass за допомогою відповідного мовного тегу та локалізованих рядків. Англійські рядки можна налаштувати таким же чином. Наприклад, ось як можна додати переклад іспанською мовою (код іспанської мови es: ):
Ось lang(es)у дії на власний вхідний файл для перекладу іспанською:
Вам потрібно буде правильно встановити мову вашого документа (або його піддерева), щоб відображався правильний текст. Серед інших методів це можна зробити за допомогою атрибута елемента langабо<html> заголовка Content-LanguageHTTP .