דוגמאות והנחיות שימוש לסגנונות בקרת טפסים, אפשרויות פריסה ורכיבים מותאמים אישית ליצירת מגוון רחב של טפסים.
סקירה כללית
פקדי הטופס של Bootstrap מתרחבים בסגנונות הטופס המחודשים שלנו עם מחלקות. השתמש בשיעורים אלה כדי להצטרף לצגים המותאמים אישית שלהם לעיבוד עקבי יותר בדפדפנים ובמכשירים.
הקפד להשתמש typeבתכונה מתאימה בכל הקלטים (למשל, emailעבור כתובת דוא"ל או numberעבור מידע מספרי) כדי לנצל את פקדי הקלט החדשים יותר כמו אימות דוא"ל, בחירת מספרים ועוד.
הנה דוגמה מהירה להדגמת סגנונות הצורה של Bootstrap. המשך לקרוא לתיעוד על שיעורים נדרשים, פריסת טפסים ועוד.
פקדי טופס
פקדי טופס טקסטואליים - כמו <input>s, <select>s ו- <textarea>s - מעוצבים עם .form-controlהמחלקה. כלולים סגנונות למראה כללי, מצב מיקוד, גודל ועוד.
עבור קלט קבצים, החלף את ה- .form-controlfor .form-control-file.
גודל
הגדר גבהים באמצעות מחלקות כמו .form-control-lgו .form-control-sm.
לקריאה בלבד
הוסף את readonlyהתכונה הבוליאנית בקלט כדי למנוע שינוי בערך הקלט. כניסות לקריאה בלבד נראות קלות יותר (בדיוק כמו כניסות מושבתות), אך שומרות על הסמן הסטנדרטי.
טקסט רגיל לקריאה בלבד
אם ברצונך <input readonly>שאלמנטים בטופס שלך יהיו בסגנון טקסט רגיל, השתמש .form-control-plaintextבמחלקה כדי להסיר את סגנון ברירת המחדל של שדות הטופס ולשמור על השוליים והריפוד הנכונים.
כניסות טווח
הגדר כניסות טווח הניתנות לגלילה אופקית באמצעות .form-control-range.
תיבות סימון ומכשירי רדיו
תיבות סימון ומכשירי רדיו כברירת מחדל משופרים בעזרת מחלקה אחת לשני סוגי הקלט המשפרת את הפריסה וההתנהגות של רכיבי ה-HTML.form-check שלהם . תיבות סימון מיועדות לבחירת אפשרות אחת או מספר אפשרויות ברשימה, בעוד שמכשירי רדיו מיועדים לבחירת אפשרות אחת מתוך רבות.
תיבות סימון מושבתות ומכשירי רדיו נתמכים, אך כדי לספק not-allowedסמן על ריחוף של ההורה <label>, תצטרך להוסיף את disabledהתכונה ל- .form-check-input. התכונה disabled תחיל צבע בהיר יותר כדי לעזור לציין את מצב הקלט.
שימוש בתיבות סימון ומכשירי רדיו בנויים כדי לתמוך באימות טפסים מבוסס HTML ולספק תוויות תמציתיות ונגישות. ככאלה, ה- <input>s וה-s שלנו <label>הם אלמנטים אחים בניגוד ל-in- <input>a <label>. זה מעט יותר מילולי כפי שעליך לציין idותכונות forכדי לקשר את ה- <input>ו <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גם ל-s שלך <label>כך שהם יהיו ממורכזים אנכית עם פקדי הטפסים המשויכים להם.
לפעמים, אולי תצטרך להשתמש בכלי עזר לשוליים או ריפוד כדי ליצור את היישור המושלם שאתה צריך. לדוגמה, הסרנו את padding-topתווית כניסות הרדיו המוערמות שלנו כדי ליישר טוב יותר את קו הבסיס של הטקסט.
גודל תווית טופס אופקי
הקפד להשתמש .col-form-label-smאו .col-form-label-lgל- <label>s או s שלך <legend>כדי לעקוב נכון אחר הגודל של .form-control-lgו .form-control-sm.
גודל עמודות
כפי שמוצג בדוגמאות הקודמות, מערכת הרשת שלנו מאפשרת לך למקם כל מספר של .cols בתוך a .rowאו .form-row. הם יחלקו ביניהם שווה בשווה את הרוחב הזמין. אתה יכול גם לבחור תת-קבוצה של העמודות שלך כדי לתפוס פחות או יותר מקום, בעוד שהשארים .colמחלקים באופן שווה את השאר, עם מחלקות עמודות ספציפיות כמו .col-7.
התאמה אוטומטית
הדוגמה שלמטה משתמשת בכלי עזר flexbox כדי למרכז אנכית את התוכן ושינויים .colכך .col-autoשהעמודות שלך תופסות רק כמה שיותר מקום לפי הצורך. במילים אחרות, העמודה מגדילה את עצמה על סמך התוכן.
לאחר מכן תוכל לערבב את זה שוב עם מחלקות עמודות ספציפיות לגודל.
השתמש .form-inlineבכיתה כדי להציג סדרה של תוויות, פקדי טפסים וכפתורים בשורה אופקית אחת. פקדי טפסים בתוך טפסים מוטבעים משתנים מעט ממצבי ברירת המחדל שלהם.
הפקדים הם display: flex, מכווצים כל שטח לבן HTML ומאפשרים לך לספק בקרת יישור עם כלי עזר לרווחים ו- flexbox .
בקרות וקבוצות קלט מקבלים width: autoכדי לעקוף את ברירת המחדל של Bootstrap width: 100%.
הפקדים מופיעים בשורה רק ביציאות תצוגה ברוחב של לפחות 576 פיקסלים כדי לתת מענה ליציאות תצוגה צרות במכשירים ניידים.
ייתכן שיהיה עליך לטפל באופן ידני ברוחב וביישור של פקדי טפסים בודדים עם כלי עזר לרווח (כמתואר להלן). לבסוף, הקפד לכלול תמיד a <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>) בתוך a <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 מקיף את ה- :invalidand :validסגנונות .was-validatedלמחלקה אב, בדרך כלל מיושם על ה- <form>. אחרת, כל שדה חובה ללא ערך יופיע כלא חוקי בעת טעינת העמוד. בדרך זו, תוכל לבחור מתי להפעיל אותם (בדרך כלל לאחר ניסיון שליחת טופס).
כדי לאפס את מראה הטופס (לדוגמה, במקרה של הגשת טופס דינמי באמצעות AJAX), הסר את .was-validatedהמחלקה מהמחלקה <form>שוב לאחר ההגשה.
כחלופה, .is-invalidוניתן .is-validלהשתמש במחלקות במקום הפסאודו-מחלקות לאימות צד השרת . הם אינם דורשים .was-validatedכיתת הורים.
בשל אילוצים באופן שבו עובד CSS, איננו יכולים (נכון לעכשיו) להחיל סגנונות על a <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על זה עבור מיקום קצה הכלים. בדוגמה למטה, כיתות העמודות שלנו כבר קיימו את זה, אך ייתכן שהפרויקט שלך ידרוש הגדרה חלופית.
טפסים מותאמים אישית
להתאמה אישית רבה עוד יותר ועקביות בין דפדפנים, השתמש ברכיבי הטופס המותאמים לחלוטין שלנו כדי להחליף את ברירות המחדל של הדפדפן. הם בנויים על גבי סימון סמנטי ונגיש, כך שהם תחליפים מוצקים לכל בקרת טופס ברירת מחדל.
תיבות סימון ומכשירי רדיו
כל תיבת סימון ורדיו עטופים ב-a <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 . זה מספק לנו את השליטה הטובה ביותר לעיצוב ומיקום בדפדפנים ובמכשירים.
תיבות סימון
תיבות סימון מותאמות אישית יכולות גם להשתמש ב- :indeterminatepseudo class כשהן מוגדרות ידנית באמצעות JavaScript (אין תכונת HTML זמינה לציון אותה).
אם אתה משתמש ב-jQuery, משהו כזה אמור להספיק:
רדיו
בשורה
נָכֶה
ניתן גם להשבית תיבות סימון ומכשירי רדיו מותאמים אישית. הוסף את disabledהתכונה הבוליאנית ל- <input>והמחוון המותאם אישית ותיאור התווית יעוצבו באופן אוטומטי.
בחר תפריט
תפריטים מותאמים אישית <select>צריכים רק מחלקה מותאמת אישית, .custom-selectכדי להפעיל את הסגנונות המותאמים אישית. סגנונות מותאמים אישית מוגבלים <select>למראה הראשוני של ה-s ולא ניתן לשנות את ה- <option>s עקב מגבלות הדפדפן.
אתה יכול גם לבחור מתוך בחירות מותאמות אישית קטנות וגדולות כדי להתאים לקלט הטקסט בגודל דומה שלנו.
התכונה multipleנתמכת גם:
כמו sizeהתכונה:
טווח
צור <input type="range">פקדים מותאמים אישית עם .custom-range. המסלול (הרקע) והאגודל (הערך) מעוצבים שניהם כך שיראו אותו הדבר בדפדפנים. מכיוון שרק IE ו-Firefox תומכים ב"מילוי" המסלול שלהם משמאל או ימין של האגודל כאמצעי להצביע על התקדמות חזותית, אנחנו לא תומכים בו כרגע.
לקלט טווח יש ערכים מרומזים עבור minו- ו max, בהתאמה. אתה יכול לציין ערכים חדשים עבור אלה המשתמשים בתכונות ו .0100minmax
כברירת מחדל, קלט הטווח "הצמד" לערכים שלמים. כדי לשנות זאת, אתה יכול לציין stepערך. בדוגמה למטה, אנו מכפילים את מספר השלבים באמצעות step="0.5".
סייר קבצים
קלט הקובץ הוא המסובך ביותר בחבורה ודורש JavaScript נוסף אם תרצה לחבר אותם עם פונקציונלי בחר קובץ... וטקסט נבחר של שם הקובץ.
אנו מסתירים את קובץ ברירת המחדל <input>באמצעות opacityובמקום זאת מעצבים את ה- <label>. הכפתור נוצר וממוקם עם ::after. לבסוף, אנו מכריזים על widthו height-על <input>עבור מרווח מתאים לתוכן מסביב.
תרגום או התאמה אישית של המחרוזות
המחלקה :lang()הפסאודו משמשת כדי לאפשר תרגום של הטקסט "עיון" לשפות אחרות. עוקף או הוסף ערכים למשתנה Sass עם תג השפה$custom-file-text הרלוונטי ומחרוזות מקומיות. ניתן להתאים אישית את המחרוזות באנגלית באותו אופן. לדוגמה, כך ניתן להוסיף תרגום לספרדית (קוד השפה של ספרדית הוא ):es
הנה lang(es)בפעולה על קלט הקובץ המותאם אישית עבור תרגום ספרדית:
תצטרך להגדיר את שפת המסמך שלך (או תת-עץ שלו) בצורה נכונה כדי שהטקסט הנכון יוצג. ניתן לעשות זאת באמצעות התכונה באלמנט langאו<html> כותרת Content-LanguageHTTP , בין שיטות אחרות.